<?xml version="1.0" encoding="UTF-8"?>
<roms>
<!--
  5EAT TCU (Subaru, M32R CPU) — RomRaider static table definition.
  GENERATED by tools/generate_romraider_def.py — regenerate from there
  rather than hand-editing. Full technical derivation in docs/TECHNICAL-NOTES.md.

  Static file editor only — cannot connect live to the vehicle through
  RomRaider (different CPU/protocol family than supported engine ECUs).
  After editing, run tools/checksum.py's fix_checksum() before flashing —
  RomRaider's automatic checksum fix does not know this ROM's algorithm.
  Confirmed units: gear ratios (/1024), engine speed (/8), temperature
  (-40 C), vehicle speed (km/h), accelerator angle (raw/255). Anything
  still shown as "raw" has no confirmed conversion; it is the real
  stored value, just unlabelled. Pressure units are NOT confirmed.
-->

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91D1206000</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB431M</internalidstring>
   <caseid>R9H</caseid>
   <ecuid>91D1206000</ecuid>
   <version>91D1206000</version>
   <year>Pre-2005 (unconfirmed)</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91D1206000 (JDM)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91D1206000  (cal ID MB431M, JDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x010108" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x010108" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x010108" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01C3BD" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01C3BD" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010424" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01040C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010456" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x01043E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010488" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x010470" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104BA" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x0104A2" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104EC" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x0104D4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0114BE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x0114AA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0114E8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x0114D4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011512" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x0114FE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01153C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x011528" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011566" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x011552" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0115E6" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x0115D2" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011610" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x0115FC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01163A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x011626" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011664" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x011650" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01168E" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x01167A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D26" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D1C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D3C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D32" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D52" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D48" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D68" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D5E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D7E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D74" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DA8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D9E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DBE" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DB4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DD4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DCA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DEA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DE0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E00" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DF6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0112DC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0112D2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0112F2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0112E8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011308" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0112FE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01131E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011314" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011334" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01132A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x01085A" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010846" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010884" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010870" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x011844" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x011838" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0116D2" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x0116BC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011700" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x0116EA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01172E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x011718" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01175C" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x011746" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01178A" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x011774" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0118BA" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x01189A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0118FC" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x0118DC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0117D6" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x0117C0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="1D" name="Gear Ratios (1st-5th)" category="Transmission - Gear Ratios" storageaddress="0x01234C" storagetype="uint16" endian="big" sizex="5" userlevel="1">
   <scaling units="ratio" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.001" coarseincrement="0.010" />
   <description>The transmission's five forward gear ratios, indexed by current gear. Stock values match the Subaru factory service manual exactly: 3.540, 2.264, 1.471, 1.000, 0.834. The scale factor (raw/1024) is CONFIRMED — the decompiled code divides these by 0x400 when computing expected speed, and the result matches the published ratios to within 0.0007. Used by the TCU to compute expected output speed per gear and to detect gear-ratio faults (DTC P0730). Changing these does NOT change the physical gearing — it changes what the TCU BELIEVES the gearing is, which affects ratio-based fault detection and speed calculations.</description>
  </table>

  <table type="1D" name="Shift State Bit Pattern 1 of 5" category="Transmission - Shift State Patterns (Expert)" storageaddress="0x0087AA" storagetype="uint8" endian="big" sizex="14" userlevel="5">
   <scaling units="bitmask" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <description>One of five parallel 14-entry bit-pattern arrays (packed contiguously at 0x0087AA-0x0087EF), all indexed by the same internal shift-state variable (0-13) and each driving a different control output (this one feeds RAM 0x00808885). Confirmed via decompilation. EXPERT/DANGEROUS. These are BIT PATTERNS (every stock value is a power of two), not scalar quantities — editing them as ordinary numbers is very likely to produce an invalid pattern. On an automatic transmission an invalid clutch/solenoid pattern can command two elements at once, which can bind the driveline and cause real mechanical damage. The exact output each bit drives is NOT decoded — do not change these unless you have independently confirmed what each bit does on this exact firmware.</description>
  </table>

  <table type="1D" name="Shift State Bit Pattern 2 of 5" category="Transmission - Shift State Patterns (Expert)" storageaddress="0x0087B8" storagetype="uint8" endian="big" sizex="14" userlevel="5">
   <scaling units="bitmask" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <description>One of five parallel 14-entry bit-pattern arrays (packed contiguously at 0x0087AA-0x0087EF), all indexed by the same internal shift-state variable (0-13) and each driving a different control output (this one feeds RAM 0x00808883). Confirmed via decompilation. EXPERT/DANGEROUS. These are BIT PATTERNS (every stock value is a power of two), not scalar quantities — editing them as ordinary numbers is very likely to produce an invalid pattern. On an automatic transmission an invalid clutch/solenoid pattern can command two elements at once, which can bind the driveline and cause real mechanical damage. The exact output each bit drives is NOT decoded — do not change these unless you have independently confirmed what each bit does on this exact firmware.</description>
  </table>

  <table type="1D" name="Shift State Bit Pattern 3 of 5" category="Transmission - Shift State Patterns (Expert)" storageaddress="0x0087C6" storagetype="uint8" endian="big" sizex="14" userlevel="5">
   <scaling units="bitmask" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <description>One of five parallel 14-entry bit-pattern arrays (packed contiguously at 0x0087AA-0x0087EF), all indexed by the same internal shift-state variable (0-13) and each driving a different control output (this one feeds RAM 0x00808861). Confirmed via decompilation. EXPERT/DANGEROUS. These are BIT PATTERNS (every stock value is a power of two), not scalar quantities — editing them as ordinary numbers is very likely to produce an invalid pattern. On an automatic transmission an invalid clutch/solenoid pattern can command two elements at once, which can bind the driveline and cause real mechanical damage. The exact output each bit drives is NOT decoded — do not change these unless you have independently confirmed what each bit does on this exact firmware.</description>
  </table>

  <table type="1D" name="Shift State Bit Pattern 4 of 5" category="Transmission - Shift State Patterns (Expert)" storageaddress="0x0087D4" storagetype="uint8" endian="big" sizex="14" userlevel="5">
   <scaling units="bitmask" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <description>One of five parallel 14-entry bit-pattern arrays (packed contiguously at 0x0087AA-0x0087EF), all indexed by the same internal shift-state variable (0-13) and each driving a different control output (this one feeds RAM 0x00808863). Confirmed via decompilation. EXPERT/DANGEROUS. These are BIT PATTERNS (every stock value is a power of two), not scalar quantities — editing them as ordinary numbers is very likely to produce an invalid pattern. On an automatic transmission an invalid clutch/solenoid pattern can command two elements at once, which can bind the driveline and cause real mechanical damage. The exact output each bit drives is NOT decoded — do not change these unless you have independently confirmed what each bit does on this exact firmware.</description>
  </table>

  <table type="1D" name="Shift State Bit Pattern 5 of 5" category="Transmission - Shift State Patterns (Expert)" storageaddress="0x0087E2" storagetype="uint8" endian="big" sizex="14" userlevel="5">
   <scaling units="bitmask" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <description>One of five parallel 14-entry bit-pattern arrays (packed contiguously at 0x0087AA-0x0087EF), all indexed by the same internal shift-state variable (0-13) and each driving a different control output (this one feeds RAM 0x0080886B). Confirmed via decompilation. EXPERT/DANGEROUS. These are BIT PATTERNS (every stock value is a power of two), not scalar quantities — editing them as ordinary numbers is very likely to produce an invalid pattern. On an automatic transmission an invalid clutch/solenoid pattern can command two elements at once, which can bind the driveline and cause real mechanical damage. The exact output each bit drives is NOT decoded — do not change these unless you have independently confirmed what each bit does on this exact firmware.</description>
  </table>

  <table type="1D" name="Cold ATF 5th Gear Lockout Temperature" category="Transmission - Temperature" storageaddress="0x01000A" storagetype="uint8" endian="big" sizex="1" userlevel="1">
   <scaling units="°F" expression="(x-40)*9/5+32" to_byte="(x-32)*5/9+40" format="0" fineincrement="1" coarseincrement="9" />
   <description>Below this ATF temperature the TCU swaps in a placeholder (disabled) shift schedule specifically when in 5th gear — i.e. it restricts 5th until the fluid warms up. Stock 15 °C / 59 °F. Confirmed via decompilation: the check is gated on current gear == 5th. Raising it keeps 5th locked out longer; lowering it releases 5th sooner on a cold transmission.</description>
  </table>

  <table type="1D" name="Assumed ATF Temperature (Sensor Fallback)" category="Transmission - Temperature" storageaddress="0x011CF6" storagetype="uint8" endian="big" sizex="1" userlevel="1">
   <scaling units="°F" expression="(x-40)*9/5+32" to_byte="(x-32)*5/9+40" format="0" fineincrement="1" coarseincrement="9" />
   <description>The temperature the TCU substitutes when the measured ATF temperature is flagged unusable. Stock 95 °C / 203 °F — a deliberately warm assumption, so a failed sensor does not make the TCU behave as if the fluid were cold.</description>
  </table>

  <table type="1D" name="Cold Switchover Temperature (Lower)" category="Transmission - Temperature" storageaddress="0x00806E" storagetype="uint8" endian="big" sizex="1" userlevel="1">
   <scaling units="°F" expression="(x-40)*9/5+32" to_byte="(x-32)*5/9+40" format="0" fineincrement="1" coarseincrement="9" />
   <description>Lower half of a two-point temperature switch with built-in hysteresis (pairs with 'Cold Switchover Temperature (Upper)'). Below this the TCU selects one calibration constant; at or above the upper point it selects another. Stock -10 °C / 14 °F.</description>
  </table>

  <table type="1D" name="Cold Switchover Temperature (Upper)" category="Transmission - Temperature" storageaddress="0x00806F" storagetype="uint8" endian="big" sizex="1" userlevel="1">
   <scaling units="°F" expression="(x-40)*9/5+32" to_byte="(x-32)*5/9+40" format="0" fineincrement="1" coarseincrement="9" />
   <description>Upper half of the cold switchover hysteresis pair. Stock -5 °C / 23 °F. Keep this above the lower point — inverting them would remove the hysteresis and can cause the selection to chatter.</description>
  </table>

  <table type="1D" name="Speed Sensor 1 Pulses Per Revolution" category="Transmission - Speed Sensors" storageaddress="0x01C2C1" storagetype="uint8" endian="big" sizex="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <description>Pulses per revolution for speed sensor channel 1. CONFIRMED: the firmware computes RPM as 60,000,000 / (this value x measured pulse period) — the standard period-to-RPM formula (60 seconds x a 1 MHz timer). Stock value 16, i.e. a 16-tooth tone ring. Change this ONLY if the physical tone ring / sensor tooth count actually differs, otherwise every speed-derived calculation in the TCU will be wrong.</description>
  </table>

  <table type="1D" name="Speed Sensor 2 Pulses Per Revolution" category="Transmission - Speed Sensors" storageaddress="0x01C2C2" storagetype="uint8" endian="big" sizex="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <description>Pulses per revolution for speed sensor channel 2 — same confirmed 60,000,000/(N x period) RPM formula as channel 1, on an independent input with its own tooth count. Stock value 22. Same warning: only change this if the physical tooth count genuinely differs.</description>
  </table>

  <table type="1D" name="Speed Signal Ceiling (RPM)" category="Transmission - Speed Sensors" storageaddress="0x01C2A8" storagetype="uint16" endian="big" sizex="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <description>Upper clamp applied to both speed-sensor channels AND to the CAN-received engine speed signal — all three are limited to this value. Stock 10000 (RPM). This shared clamp is part of the evidence that all three signals carry the same unit; it also sets the ceiling the engine-speed table axes are derived against.</description>
  </table>

  <table type="1D" name="Signal Smoothing Filter Gain (CAN 0x410 Chain)" category="Transmission - Calibration Constants" storageaddress="0x01137C" storagetype="uint16" endian="big" sizex="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <description>Confirmed via decompilation: the calibratable gain argument to the first-order smoothing filter that produces the CAN ID 0x410-derived reference signal (docs/TECHNICAL-NOTES.md), stock value 128. Larger = faster response to changes in the incoming CAN signal, smaller = more smoothing/lag.</description>
  </table>

  <table type="1D" name="Signal Smoothing Filter Gain (Signal FE Chain)" category="Transmission - Calibration Constants" storageaddress="0x01137E" storagetype="uint16" endian="big" sizex="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <description>Confirmed via decompilation: the calibratable gain argument to the smoothing filter that feeds the 'Smoothed Signal Response Curve' table (0x0117BE), stock value 128. Larger = faster response, smaller = more smoothing/lag.</description>
  </table>

  <table type="1D" name="Gear Threshold Constant" category="Transmission - Calibration Constants" storageaddress="0x010840" storagetype="uint8" endian="big" sizex="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <description>Confirmed via decompilation: a single-byte constant (stock value 2) compared directly against the current gear (0x0080885A) and a second gear-like index (0x0080886E) in several places in the same function — reads like a 'this logic only applies above/below gear N' cutoff. Exact effect of changing it is NOT verified on real hardware.</description>
  </table>

  <table type="1D" name="Signal Threshold Constant" category="Transmission - Calibration Constants" storageaddress="0x010842" storagetype="uint8" endian="big" sizex="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <description>Confirmed via decompilation: a constant compared against a computed signal delta in the same fault-detection routine that reads the Pressure Threshold E tables. Storage width (byte vs. word) was inferred from the surrounding code pattern, not independently double-checked — verify before relying on the exact stored value.</description>
  </table>

  <!-- ============ Record-format curves ============ -->
  <table type="3D" name="Temp Sensor 1 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x00807E" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 1 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x008080" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Temp Sensor 2 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x0081E8" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 2 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x0081EA" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Torque Converter Slip Pressure Factor - slip ratio" category="Transmission - Signal Response Curves" storageaddress="0x008332" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="turbine/engine ratio" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>slip ratio</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Torque Converter Slip Pressure Factor - factor" category="Transmission - Signal Response Curves" storageaddress="0x008334" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82AC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008376" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82AC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008378" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="CAN 0x412 Signal Curve - Breakpoint" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083D8" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="CAN 0x412 Signal Curve - Value" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DA" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve (8428) - °C" category="Transmission - Temperature Curves" storageaddress="0x008428" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve (8428) - factor" category="Transmission - Temperature Curves" storageaddress="0x00842A" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 1 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008488" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 1 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00848A" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 2 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0084E2" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 2 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0084E4" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 3 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008534" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 3 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008536" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 4 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x00856E" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 4 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008570" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 5 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0085AA" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 5 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0085AC" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 1 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EE30" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 1 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EE32" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 2 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EE6A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 2 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EE6C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 3 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EEA4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 3 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EEA6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 1 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x00F026" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 1 of 3 - 1/256" category="Transmission - Reference Speed" storageaddress="0x00F028" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 1 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x00F068" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 1 of 2 - 1/256" category="Transmission - Signal Response Curves" storageaddress="0x00F06A" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x00F0BA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00F0BC" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Hysteresis Curve 0x00F610 - Breakpoint" category="Transmission - Uncategorised Curves" storageaddress="0x00F610" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Hysteresis Curve 0x00F610 - Value" category="Transmission - Uncategorised Curves" storageaddress="0x00F612" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 2 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x00F69C" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 2 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x00F69E" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 3 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x00FA16" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 3 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x00FA18" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010898" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01089A" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0108EA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0108EC" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010AEC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010AEE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010C9C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010C9E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 1 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x010E74" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 1 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x010E76" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 2 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x010EDC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 2 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x010EDE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 3 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x010F44" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 3 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x010F46" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 4 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x010FAC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 4 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x010FAE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 5 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011014" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 5 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011016" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01107C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01107E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x011240" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x011242" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 1) - °C" category="Transmission - Temperature Curves" storageaddress="0x011854" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 1) - factor" category="Transmission - Temperature Curves" storageaddress="0x011856" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 2) - °C" category="Transmission - Temperature Curves" storageaddress="0x01186E" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 2) - factor" category="Transmission - Temperature Curves" storageaddress="0x011870" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x011AF0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x011AF2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x011CA0" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x011CA2" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <!-- ============ Transmission - Shift Schedule ============ -->
  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x01714A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x016F10" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x016F10" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x016F10" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x016F10" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x017632" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017430" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,-1,-1,41,45,271,-1,-1,-1,-1,-1,-1,-1,275,285,-1,-1,-1,-1,-1,-1,-1,289,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017430" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,285,-1,-1,-1,-1,-1,-1,-1,289,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017430" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,116,120,124,128,132,136,140,-1,144,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,149,-1,153,157,161,165,169,173,177,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017430" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,116,120,124,128,132,136,140,-1,144,182,186,190,194,198,202,206,-1,210,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,149,-1,153,157,161,165,169,173,177,215,219,223,227,231,235,239,243,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x016EAA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x016C58" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,37,-1,-1,-1,-1,-1,41,45,49,53,57,311,-1,-1,-1,-1,-1,-1,-1,-1,-1,315,325,-1,-1,-1,-1,-1,-1,-1,-1,-1,329,339,-1,-1,-1,-1,-1,-1,-1,-1,-1,343" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x016C58" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,325,-1,-1,-1,-1,-1,-1,-1,-1,-1,329,339,-1,-1,-1,-1,-1,-1,-1,-1,-1,343" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x016C58" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,-1,168,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,173,-1,-1,-1,177,181,185,189,193,197,201,339,-1,-1,-1,-1,-1,-1,-1,-1,-1,343" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x016C58" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,-1,168,206,210,214,218,222,226,230,234,238,-1,242,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,173,-1,-1,-1,177,181,185,189,193,197,201,247,251,255,259,263,267,271,275,279,283,287" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x01696A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x0173CA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x0168E8" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="0,4,9,13,23,27,37,41,51,55" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017348" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="0,4,9,13,23,27,37,41,51,55" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016868" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,9,13,27,31,41,45,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x0172C8" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,9,13,27,31,41,45,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x0167E0" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,9,13,27,31,45,49,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017240" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,9,13,27,31,45,49,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x016750" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x0171B0" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x0166EA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016490" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,37,-1,-1,-1,-1,-1,41,45,49,53,57,315,-1,-1,-1,-1,-1,-1,-1,-1,-1,319,329,-1,-1,-1,-1,-1,-1,-1,-1,-1,333,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016490" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,329,-1,-1,-1,-1,-1,-1,-1,-1,-1,333,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016490" storagetype="uint16" endian="big" sizex="12" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,28,-1,-1,32,62,-1,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,168,-1,172,37,-1,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,-1,107,111,115,119,123,127,177,-1,-1,-1,-1,181,185,189,193,197,201,205,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>9.4</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016490" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,-1,4,8,12,16,20,24,28,-1,-1,32,62,-1,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,168,-1,172,210,-1,214,218,222,226,230,234,238,242,-1,246,37,-1,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,-1,107,111,115,119,123,127,177,-1,-1,-1,-1,181,185,189,193,197,201,205,251,-1,255,259,263,267,271,275,279,283,287,291" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>9.4</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x016BF2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x0169D0" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,41,-1,45,49,287,-1,-1,-1,-1,-1,-1,-1,291,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x0169D0" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,54,58,62,66,70,74,78,-1,82,33,-1,-1,-1,37,41,-1,45,49,87,-1,-1,91,95,99,103,107,111,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x0169D0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,54,-1,58,62,66,70,74,78,-1,82,116,120,124,128,132,136,140,144,-1,148,33,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,157,161,165,169,173,177,181,315,-1,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x0169D0" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,54,-1,-1,58,62,66,70,74,78,-1,82,116,-1,120,124,128,132,136,140,144,-1,148,186,-1,190,194,198,202,206,210,214,-1,218,33,-1,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,-1,157,161,165,169,173,177,181,223,227,231,235,239,243,247,251,255,259,263" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x015ECA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x015CA8" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,41,-1,45,49,287,-1,-1,-1,-1,-1,-1,-1,291,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x015CA8" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,54,58,62,66,70,74,78,-1,82,33,-1,-1,-1,37,41,-1,45,49,87,-1,-1,91,95,99,103,107,111,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x015CA8" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,54,-1,58,62,66,70,74,78,-1,82,116,120,124,128,132,136,140,144,-1,148,33,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,157,161,165,169,173,177,181,315,-1,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x015CA8" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,54,-1,-1,58,62,66,70,74,78,-1,82,116,-1,120,124,128,132,136,140,144,-1,148,186,-1,190,194,198,202,206,210,214,-1,218,33,-1,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,-1,157,161,165,169,173,177,181,223,227,231,235,239,243,247,251,255,259,263" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x01642A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x0161D0" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,37,-1,-1,-1,-1,-1,41,45,49,53,57,315,-1,-1,-1,-1,-1,-1,-1,-1,-1,319,329,-1,-1,-1,-1,-1,-1,-1,-1,-1,333,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x0161D0" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,329,-1,-1,-1,-1,-1,-1,-1,-1,-1,333,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x0161D0" storagetype="uint16" endian="big" sizex="12" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,28,-1,-1,32,62,-1,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,168,-1,172,37,-1,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,-1,107,111,115,119,123,127,177,-1,-1,-1,-1,181,185,189,193,197,201,205,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>9.4</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x0161D0" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,-1,4,8,12,16,20,24,28,-1,-1,32,62,-1,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,168,-1,172,210,-1,214,218,222,226,230,234,238,242,-1,246,37,-1,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,-1,107,111,115,119,123,127,177,-1,-1,-1,-1,181,185,189,193,197,201,205,251,-1,255,259,263,267,271,275,279,283,287,291" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>9.4</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x01616A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x015F30" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x015F30" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x015F30" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x015F30" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <!-- ======= Downshift pressure and ramp timing ======= -->
  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011DC8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011DCA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011E02" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011E04" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EB0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EB2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011E3C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011E3E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EEA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EEC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F5E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F60" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011E76" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011E78" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F24" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F26" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F98" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F9A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FD2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FD4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x01200C" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x01200E" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <!-- ======= Line pressure targets (torque -> kPa) ======= -->
  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x01205C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x01205E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0120BE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0120C0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012120" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012122" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01218A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x01218C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121EC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121EE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x01224E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012250" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122B0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122B2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x012368" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01236A" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0123C2" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0123C4" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <!-- ============ Transmission - Diagnostics ============ -->
  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01CE20" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE20 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01CE76" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE76 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01CE74" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE74 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01CE50" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE50 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01CE72" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE72 as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01CE18" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE18 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01CE70" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE70 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01CE1A" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE1A as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01CE32" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE32 as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01CE34" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE34 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01CE36" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE36 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01CE38" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE38 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01CE8E" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE8E as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01CE6E" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE6E as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01CE26" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE26 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01CE30" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE30 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01CE2E" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE2E as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB2" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB2 as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01CE28" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE28 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB0" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB0 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01CE2A" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE2A as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01CEAE" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEAE as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01CE6C" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE6C as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01CEAC" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEAC as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01CE6A" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE6A as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01CEAA" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEAA as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01CE8C" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE8C as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01CE68" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE68 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01CED4" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED4 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01CED2" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED2 as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01CED0" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED0 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01CECE" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CECE as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01CECC" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CECC as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01CECA" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CECA as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01CEC8" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEC8 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01CED6" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED6 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01CE2C" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE2C as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01CE3A" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE3A as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01CE98" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE98 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01CE9C" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE9C as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01CE9A" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE9A as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01CE80" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE80 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01CE7E" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE7E as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01CE7C" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE7C as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01CE7A" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE7A as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01CE92" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE92 as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01CE90" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE90 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01CE78" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE78 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01CEC0" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEC0 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBE" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBE as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBC" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBC as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBA" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBA as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB8" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB8 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91FE216300</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB436G</internalidstring>
   <caseid>QS1</caseid>
   <ecuid>91FE216300</ecuid>
   <version>91FE216300</version>
   <year>2005</year>
   <market>USDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91FE216300 (USDM Outback XT)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>512kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91FE216300  (cal ID MB436G, USDM, 512kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01C3DD" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01C3DD" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01049C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010518" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x010500" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01054A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010532" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01057C" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010564" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011552" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x01153E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01157C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011568" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115A6" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011592" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115D0" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x0115BC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115FA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115E6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01167A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011666" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116A4" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011690" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116CE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x0116BA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116F8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116E4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011722" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x01170E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DB6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DAC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E04" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E38" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E2E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E44" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E64" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E5A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E7A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E70" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E90" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E86" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01136C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011362" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011382" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011378" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011398" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113AE" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113A4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113C4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113BA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108EA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108D6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010914" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010900" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118D8" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x0118CC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011766" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011750" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011794" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01177E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117C2" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x0117AC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117F0" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01181E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x011808" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01194E" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x01192E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011990" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011970" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01186A" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011854" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <!-- ============ Record-format curves ============ -->
  <table type="3D" name="Temp Sensor 1 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x008080" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 1 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x008082" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Temp Sensor 2 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x0081EA" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 2 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x0081EC" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Torque Converter Slip Pressure Factor - slip ratio" category="Transmission - Signal Response Curves" storageaddress="0x008334" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="turbine/engine ratio" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>slip ratio</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Torque Converter Slip Pressure Factor - factor" category="Transmission - Signal Response Curves" storageaddress="0x008336" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82AC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008378" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82AC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00837A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="CAN 0x412 Signal Curve - Breakpoint" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DA" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="CAN 0x412 Signal Curve - Value" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DC" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve (8428) - °C" category="Transmission - Temperature Curves" storageaddress="0x00842A" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve (8428) - factor" category="Transmission - Temperature Curves" storageaddress="0x00842C" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 1 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008490" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 1 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008492" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 2 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0084EA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 2 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0084EC" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 3 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x00853C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 3 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00853E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 4 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008576" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 4 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008578" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 5 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0085B2" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 5 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0085B4" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 1 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EF54" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 1 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EF56" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 2 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EF8E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 2 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EF90" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 3 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EFC8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 3 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EFCA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 1 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010928" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 1 of 3 - 1/256" category="Transmission - Reference Speed" storageaddress="0x01092A" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 1 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01097A" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 1 of 2 - 1/256" category="Transmission - Signal Response Curves" storageaddress="0x01097C" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010B7C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010B7E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Hysteresis Curve 0x00F610 - Breakpoint" category="Transmission - Uncategorised Curves" storageaddress="0x010D2C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Hysteresis Curve 0x00F610 - Value" category="Transmission - Uncategorised Curves" storageaddress="0x010D2E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 2 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010F04" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 2 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010F06" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 3 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010F6C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 3 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010F6E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010FD4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010FD6" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01103C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01103E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0110A4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0110A6" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01110C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01110E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 1 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x0112D0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 1 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x0112D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 2 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x0118E8" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 2 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x0118EA" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 3 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011902" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 3 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011904" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 4 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011B84" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 4 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011B86" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 5 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011D34" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 5 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011D36" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01D266" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01D268" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01D2A8" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01D2AA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 1) - °C" category="Transmission - Temperature Curves" storageaddress="0x01D2FA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 1) - factor" category="Transmission - Temperature Curves" storageaddress="0x01D2FC" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 2) - °C" category="Transmission - Temperature Curves" storageaddress="0x01D850" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 2) - factor" category="Transmission - Temperature Curves" storageaddress="0x01D852" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01D8DC" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01D8DE" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01DC56" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01DC58" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x016F52" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x016D98" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,29,-1,33,-1,-1,-1,37,41,235,-1,-1,-1,-1,-1,-1,239,249,-1,-1,-1,-1,-1,-1,253,263,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x016D98" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,-1,-1,24,46,50,54,58,62,66,70,-1,74,29,-1,33,-1,-1,-1,-1,37,41,79,-1,83,-1,87,-1,-1,91,95,249,-1,-1,-1,-1,-1,-1,-1,253,263,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x016D98" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,20,-1,-1,24,46,50,54,58,62,66,70,-1,74,100,104,108,112,116,120,124,-1,128,29,-1,33,-1,-1,-1,-1,37,41,79,-1,83,-1,87,-1,-1,91,95,133,-1,137,-1,-1,-1,-1,141,145,263,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x016D98" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,4,8,12,16,20,-1,-1,24,46,50,54,58,62,66,70,-1,74,100,104,108,112,116,120,124,-1,128,150,154,158,162,166,170,174,-1,178,29,-1,33,-1,-1,-1,-1,37,41,79,-1,83,-1,87,-1,-1,91,95,133,-1,137,-1,-1,-1,-1,141,145,183,-1,187,191,195,199,203,207,211" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x0173D2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017258" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,29,-1,33,-1,-1,-1,37,41,203,-1,-1,-1,-1,-1,-1,207,217,-1,-1,-1,-1,-1,-1,221,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017258" storagetype="uint16" endian="big" sizex="8" sizey="6" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,217,-1,-1,-1,-1,-1,-1,221,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017258" storagetype="uint16" endian="big" sizex="8" sizey="7" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,92,96,100,104,108,112,-1,116,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,121,-1,125,-1,-1,-1,129,133,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017258" storagetype="uint16" endian="big" sizex="8" sizey="8" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,92,96,100,104,108,112,-1,116,138,142,146,150,154,158,-1,162,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,121,-1,125,-1,-1,-1,129,133,167,-1,171,-1,-1,-1,175,179" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x016D32" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x016BB0" storagetype="uint16" endian="big" sizex="4" sizey="5" cellIndices="0,4,8,12,17,21,-1,25,207,-1,-1,211,221,-1,-1,225,235,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="4">
    <data>0.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x016BB0" storagetype="uint16" endian="big" sizex="8" sizey="6" cellIndices="0,-1,4,8,-1,-1,-1,12,30,-1,34,38,42,46,50,54,17,-1,21,-1,-1,-1,-1,25,59,63,-1,-1,-1,67,-1,71,221,-1,-1,-1,-1,-1,-1,225,235,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x016BB0" storagetype="uint16" endian="big" sizex="8" sizey="7" cellIndices="0,-1,4,8,-1,-1,-1,12,30,-1,34,38,42,46,50,54,76,-1,80,84,88,92,96,100,17,-1,21,-1,-1,-1,-1,25,59,63,-1,-1,-1,67,-1,71,105,109,-1,-1,-1,113,-1,117,235,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x016BB0" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,-1,4,8,-1,-1,-1,-1,12,30,-1,34,38,42,46,50,-1,54,76,-1,80,84,88,92,96,-1,100,122,-1,126,130,134,138,142,146,150,17,-1,21,-1,-1,-1,-1,-1,25,59,63,-1,-1,-1,67,-1,-1,71,105,109,-1,-1,-1,113,-1,-1,117,155,159,163,-1,167,171,175,179,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x01696A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x0171EA" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="37,41,0,4,14,18,28,32,46,50" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x0168E8" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="0,4,9,13,23,27,37,41,51,55" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017160" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,46,50,9,13,23,27,37,41,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016868" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,9,13,27,31,41,45,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x0170D8" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,50,54,9,13,27,31,41,45,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x0167E0" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,9,13,27,31,45,49,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017048" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x016750" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x016FB8" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x0166EA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016510" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,29,-1,-1,33,-1,-1,37,41,251,-1,-1,-1,-1,-1,-1,255,265,-1,-1,-1,-1,-1,-1,269,279,-1,-1,-1,-1,-1,-1,283" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>3.1</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016510" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,-1,12,16,20,-1,-1,-1,24,46,50,54,-1,58,62,66,70,74,-1,78,29,-1,-1,-1,33,-1,-1,-1,-1,37,41,83,-1,-1,87,-1,-1,91,-1,-1,95,99,265,-1,-1,-1,-1,-1,-1,-1,-1,-1,269,279,-1,-1,-1,-1,-1,-1,-1,-1,-1,283" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>3.1</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016510" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,-1,12,16,20,-1,-1,-1,24,46,50,54,-1,58,62,66,70,74,-1,78,104,108,112,-1,116,120,124,128,132,-1,136,29,-1,-1,-1,33,-1,-1,-1,-1,37,41,83,-1,-1,87,-1,-1,91,-1,-1,95,99,141,-1,-1,145,-1,-1,149,-1,-1,153,157,279,-1,-1,-1,-1,-1,-1,-1,-1,-1,283" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>3.1</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016510" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,8,-1,12,16,20,-1,-1,-1,24,46,50,54,-1,58,62,66,70,74,-1,78,104,108,112,-1,116,120,124,128,132,-1,136,162,166,170,-1,174,178,182,186,190,-1,194,29,-1,-1,-1,33,-1,-1,-1,-1,37,41,83,-1,-1,87,-1,-1,91,-1,-1,95,99,141,-1,-1,145,-1,-1,149,-1,-1,153,157,199,-1,-1,203,-1,207,211,215,219,223,227" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>3.1</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x016B4A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x0169D0" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,29,-1,33,-1,-1,-1,37,41,203,-1,-1,-1,-1,-1,-1,207,217,-1,-1,-1,-1,-1,-1,221,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x0169D0" storagetype="uint16" endian="big" sizex="8" sizey="6" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,217,-1,-1,-1,-1,-1,-1,221,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x0169D0" storagetype="uint16" endian="big" sizex="8" sizey="7" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,92,96,100,104,108,112,-1,116,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,121,-1,125,-1,-1,-1,129,133,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x0169D0" storagetype="uint16" endian="big" sizex="8" sizey="8" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,92,96,100,104,108,112,-1,116,138,142,146,150,154,158,-1,162,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,121,-1,125,-1,-1,-1,129,133,167,-1,171,-1,-1,-1,175,179" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x01606A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x015EF0" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,29,-1,33,-1,-1,-1,37,41,203,-1,-1,-1,-1,-1,-1,207,217,-1,-1,-1,-1,-1,-1,221,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x015EF0" storagetype="uint16" endian="big" sizex="8" sizey="6" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,217,-1,-1,-1,-1,-1,-1,221,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x015EF0" storagetype="uint16" endian="big" sizex="8" sizey="7" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,92,96,100,104,108,112,-1,116,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,121,-1,125,-1,-1,-1,129,133,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x015EF0" storagetype="uint16" endian="big" sizex="8" sizey="8" cellIndices="0,4,8,12,16,20,-1,24,46,50,54,58,62,66,-1,70,92,96,100,104,108,112,-1,116,138,142,146,150,154,158,-1,162,29,-1,33,-1,-1,-1,37,41,75,-1,79,-1,-1,-1,83,87,121,-1,125,-1,-1,-1,129,133,167,-1,171,-1,-1,-1,175,179" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x0164AA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x0162F0" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,16,-1,20,25,-1,29,-1,-1,33,37,235,-1,-1,-1,-1,-1,239,249,-1,-1,-1,-1,-1,253,263,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x0162F0" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,-1,8,12,16,-1,-1,-1,20,42,46,-1,50,54,58,62,66,-1,70,25,-1,-1,29,-1,-1,-1,-1,33,37,75,-1,79,-1,-1,83,-1,-1,87,91,249,-1,-1,-1,-1,-1,-1,-1,-1,253,263,-1,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x0162F0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,-1,8,12,16,-1,-1,-1,20,42,46,-1,50,54,58,62,66,-1,70,96,100,-1,104,108,112,116,120,-1,124,25,-1,-1,29,-1,-1,-1,-1,33,37,75,-1,79,-1,-1,83,-1,-1,87,91,129,-1,133,-1,-1,137,-1,-1,141,145,263,-1,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x0162F0" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,4,-1,8,12,16,-1,-1,-1,20,42,46,-1,50,54,58,62,66,-1,70,96,100,-1,104,108,112,116,120,-1,124,150,154,-1,158,162,166,170,174,-1,178,25,-1,-1,29,-1,-1,-1,-1,33,37,75,-1,79,-1,-1,83,-1,-1,87,91,129,-1,133,-1,-1,137,-1,-1,141,145,183,-1,187,-1,191,195,199,203,207,211" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x01628A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x0160D0" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,29,-1,33,-1,-1,-1,37,41,235,-1,-1,-1,-1,-1,-1,239,249,-1,-1,-1,-1,-1,-1,253,263,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x0160D0" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,-1,-1,24,46,50,54,58,62,66,70,-1,74,29,-1,33,-1,-1,-1,-1,37,41,79,-1,83,-1,87,-1,-1,91,95,249,-1,-1,-1,-1,-1,-1,-1,253,263,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x0160D0" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,20,-1,-1,24,46,50,54,58,62,66,70,-1,74,100,104,108,112,116,120,124,-1,128,29,-1,33,-1,-1,-1,-1,37,41,79,-1,83,-1,87,-1,-1,91,95,133,-1,137,-1,-1,-1,-1,141,145,263,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x0160D0" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,4,8,12,16,20,-1,-1,24,46,50,54,58,62,66,70,-1,74,100,104,108,112,116,120,124,-1,128,150,154,158,162,166,170,174,-1,178,29,-1,33,-1,-1,-1,-1,37,41,79,-1,83,-1,87,-1,-1,91,95,133,-1,137,-1,-1,-1,-1,141,145,183,-1,187,191,195,199,203,207,211" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F0E" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F10" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F50" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F52" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012016" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012018" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F92" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F94" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012058" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01205A" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120DC" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120DE" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FD4" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FD6" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01209A" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01209C" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01211E" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012120" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012160" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012162" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x01219C" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x01219E" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121EC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121EE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x01224E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x012250" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122B0" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122B2" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01231A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x01231C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x01237C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x01237E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x0123DE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x0123E0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012440" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012442" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124F8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124FA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x01255A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x01255C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01CE4C" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE4C as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01CEA2" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEA2 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01CEA0" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEA0 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01CE7C" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE7C as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01CE9E" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE9E as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01CE44" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE44 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01CE9C" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE9C as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01CE46" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE46 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01CE5E" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE5E as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01CE60" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE60 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01CE62" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE62 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01CE64" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE64 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBA" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBA as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01CE9A" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE9A as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01CE52" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE52 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01CE5C" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE5C as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01CE5A" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE5A as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01CEDE" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEDE as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01CE54" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE54 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01CEDC" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEDC as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01CE56" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE56 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01CEDA" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEDA as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01CE98" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE98 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01CED8" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED8 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01CE96" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE96 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01CED6" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED6 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB8" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB8 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01CE94" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE94 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01CF00" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF00 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01CEFE" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEFE as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01CEFC" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEFC as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01CEFA" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEFA as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF8" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF8 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF6" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF6 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF4" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF4 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01CF02" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF02 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01CE58" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE58 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01CE66" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE66 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01CEC4" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEC4 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01CEC8" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEC8 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01CEC6" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEC6 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01CEAC" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEAC as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01CEAA" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEAA as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01CEA8" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEA8 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01CEA6" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEA6 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBE" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBE as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBC" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBC as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01CEA4" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEA4 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01CEEC" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEEC as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01CEEA" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEEA as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01CEE8" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEE8 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01CEE6" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEE6 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01CEE4" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEE4 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91D0207500</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB436T</internalidstring>
   <caseid>Q3E</caseid>
   <ecuid>91D0207500</ecuid>
   <version>91D0207500</version>
   <year>Unknown</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91D0207500 (JDM)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91D0207500  (cal ID MB436T, JDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01CDED" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01CDED" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010450" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x010438" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010482" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x01046A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x01049C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x0104CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010518" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010500" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0114EE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x0114DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011518" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011504" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011542" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x01152E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01156C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x011558" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011596" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x011582" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011616" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011602" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011640" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x01162C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01166A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x011656" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011694" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x011680" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116BE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x0116AA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D52" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D48" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D68" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D5E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D7E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D74" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D94" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D8A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DAA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DA0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DD4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DCA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DEA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DE0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E00" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DF6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E16" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E0C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E2C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E22" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011308" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0112FE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01131E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011314" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011334" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01132A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01134A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011340" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011360" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011356" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010886" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010872" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108B0" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01089C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x011874" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x011868" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011702" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x0116EC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011730" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01171A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01175E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x011748" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01178C" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x011776" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117BA" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x0117A4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0118EA" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x0118CA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01192C" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x01190C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011806" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x0117F0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <!-- ============ Record-format curves ============ -->
  <table type="3D" name="Temp Sensor 1 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x008080" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 1 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x008082" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Temp Sensor 2 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x0081EA" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 2 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x0081EC" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Torque Converter Slip Pressure Factor - slip ratio" category="Transmission - Signal Response Curves" storageaddress="0x008334" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="turbine/engine ratio" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>slip ratio</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Torque Converter Slip Pressure Factor - factor" category="Transmission - Signal Response Curves" storageaddress="0x008336" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82AC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008378" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82AC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00837A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="CAN 0x412 Signal Curve - Breakpoint" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DA" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="CAN 0x412 Signal Curve - Value" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DC" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve (8428) - °C" category="Transmission - Temperature Curves" storageaddress="0x00842A" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve (8428) - factor" category="Transmission - Temperature Curves" storageaddress="0x00842C" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 1 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008490" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 1 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008492" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 2 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0084EA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 2 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0084EC" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 3 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x00853C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 3 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00853E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 4 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008576" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 4 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008578" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 5 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0085B2" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 5 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0085B4" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 1 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EF74" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 1 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EF76" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 2 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EFAE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 2 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EFB0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 3 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EFE8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 3 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EFEA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 1 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x0108C4" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 1 of 3 - 1/256" category="Transmission - Reference Speed" storageaddress="0x0108C6" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 1 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010916" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 1 of 2 - 1/256" category="Transmission - Signal Response Curves" storageaddress="0x010918" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010B18" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010B1A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Hysteresis Curve 0x00F610 - Breakpoint" category="Transmission - Uncategorised Curves" storageaddress="0x010CC8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Hysteresis Curve 0x00F610 - Value" category="Transmission - Uncategorised Curves" storageaddress="0x010CCA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 2 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010EA0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 2 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010EA2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 3 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010F08" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 3 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010F0A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010F70" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010F72" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010FD8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010FDA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x011040" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x011042" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0110A8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0110AA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 1 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01126C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 1 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x01126E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 2 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011884" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 2 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011886" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 3 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01189E" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 3 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x0118A0" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 4 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011B20" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 4 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011B22" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 5 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011CD0" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 5 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011CD2" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01DC76" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01DC78" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01DCB8" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01DCBA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 1) - °C" category="Transmission - Temperature Curves" storageaddress="0x01DD0A" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 1) - factor" category="Transmission - Temperature Curves" storageaddress="0x01DD0C" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 2) - °C" category="Transmission - Temperature Curves" storageaddress="0x01E260" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 2) - factor" category="Transmission - Temperature Curves" storageaddress="0x01E262" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01E2EC" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01E2EE" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01E666" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01E668" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x01781A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x017570" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,41,45,49,355,-1,-1,-1,-1,-1,-1,-1,359,369,-1,-1,-1,-1,-1,-1,-1,373,383,-1,-1,-1,-1,-1,-1,-1,387" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>6.3</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x017570" storagetype="uint16" endian="big" sizex="13" sizey="6" cellIndices="0,4,-1,-1,-1,8,12,-1,16,20,24,-1,28,54,58,-1,-1,-1,62,66,-1,70,74,78,-1,82,33,-1,-1,-1,-1,-1,-1,-1,-1,37,41,45,49,87,-1,91,95,99,103,107,111,115,119,123,127,131,369,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,373,383,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,387" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="13">
    <data>0.0</data>
    <data>6.3</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x017570" storagetype="uint16" endian="big" sizex="16" sizey="7" cellIndices="0,4,-1,-1,-1,-1,-1,-1,8,12,-1,16,20,24,-1,28,54,58,-1,-1,-1,-1,-1,-1,62,66,-1,70,74,78,-1,82,136,-1,140,144,148,152,-1,156,160,164,-1,168,172,176,-1,180,33,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,37,41,45,49,87,-1,-1,-1,-1,91,95,99,103,107,111,115,119,123,127,131,185,-1,-1,-1,-1,189,193,197,201,205,209,213,217,221,225,229,383,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,387" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="16">
    <data>0.0</data>
    <data>6.3</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x017570" storagetype="uint16" endian="big" sizex="16" sizey="8" cellIndices="0,4,-1,-1,-1,-1,-1,-1,8,12,-1,16,20,24,-1,28,54,58,-1,-1,-1,-1,-1,-1,62,66,-1,70,74,78,-1,82,136,-1,140,144,148,152,-1,156,160,164,-1,168,172,176,-1,180,234,-1,238,242,246,250,-1,254,258,262,-1,266,270,274,-1,278,33,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,37,41,45,49,87,-1,-1,-1,-1,91,95,99,103,107,111,115,119,123,127,131,185,-1,-1,-1,-1,189,193,197,201,205,209,213,217,221,225,229,283,-1,-1,-1,287,291,295,299,303,307,311,315,319,323,327,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="16">
    <data>0.0</data>
    <data>6.3</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x017CE2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017B50" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,16,-1,20,25,-1,-1,-1,-1,29,33,215,-1,-1,-1,-1,-1,219,229,-1,-1,-1,-1,-1,233,243,-1,-1,-1,-1,-1,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017B50" storagetype="uint16" endian="big" sizex="8" sizey="6" cellIndices="0,4,-1,8,12,16,-1,20,38,42,-1,46,50,54,-1,58,25,-1,-1,-1,-1,-1,29,33,63,-1,67,71,75,79,83,87,229,-1,-1,-1,-1,-1,-1,233,243,-1,-1,-1,-1,-1,-1,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017B50" storagetype="uint16" endian="big" sizex="8" sizey="7" cellIndices="0,4,-1,8,12,16,-1,20,38,42,-1,46,50,54,-1,58,92,96,-1,100,104,108,-1,112,25,-1,-1,-1,-1,-1,29,33,63,-1,67,71,75,79,83,87,117,-1,-1,121,125,129,133,137,243,-1,-1,-1,-1,-1,-1,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017B50" storagetype="uint16" endian="big" sizex="8" sizey="8" cellIndices="0,4,-1,8,12,16,-1,20,38,42,-1,46,50,54,-1,58,92,96,-1,100,104,108,-1,112,142,146,-1,150,154,158,-1,162,25,-1,-1,-1,-1,-1,29,33,63,-1,67,71,75,79,83,87,117,-1,-1,121,125,129,133,137,167,-1,171,175,179,183,187,191" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x01750A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x017228" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,28,32,36,41,-1,-1,-1,-1,45,49,53,57,61,65,383,-1,-1,-1,-1,-1,-1,-1,-1,-1,387,397,-1,-1,-1,-1,-1,-1,-1,-1,-1,401,411,-1,-1,-1,-1,-1,-1,-1,-1,-1,415" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x017228" storagetype="uint16" endian="big" sizex="14" sizey="6" cellIndices="0,4,-1,8,12,-1,16,-1,20,-1,24,28,32,36,70,74,78,82,86,-1,90,94,98,-1,102,106,110,114,41,-1,-1,-1,-1,-1,-1,-1,45,49,53,57,61,65,119,-1,-1,123,127,131,135,139,143,147,151,155,159,163,397,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,401,411,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,415" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x017228" storagetype="uint16" endian="big" sizex="14" sizey="7" cellIndices="0,4,-1,8,12,-1,16,-1,20,-1,24,28,32,36,70,74,78,82,86,-1,90,94,98,-1,102,106,110,114,168,172,176,180,184,-1,188,192,196,-1,200,204,208,212,41,-1,-1,-1,-1,-1,-1,-1,45,49,53,57,61,65,119,-1,-1,123,127,131,135,139,143,147,151,155,159,163,217,-1,-1,221,225,229,233,237,241,245,249,253,257,261,411,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,415" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x017228" storagetype="uint16" endian="big" sizex="14" sizey="8" cellIndices="0,4,-1,8,12,-1,16,-1,20,-1,24,28,32,36,70,74,78,82,86,-1,90,94,98,-1,102,106,110,114,168,172,176,180,184,-1,188,192,196,-1,200,204,208,212,266,270,274,278,282,-1,286,290,294,-1,298,302,306,310,41,-1,-1,-1,-1,-1,-1,-1,45,49,53,57,61,65,119,-1,-1,123,127,131,135,139,143,147,151,155,159,163,217,-1,-1,221,225,229,233,237,241,245,249,253,257,261,315,-1,-1,319,323,327,331,335,339,343,347,351,355,359" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x016CF0" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x017AC0" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x016C60" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017A30" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016BD0" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x0179A0" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x016B40" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017910" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x016AB0" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x017880" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x016A4A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016760" storagetype="uint16" endian="big" sizex="12" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,36,-1,40,45,-1,-1,-1,-1,-1,-1,49,53,57,61,65,387,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,391,401,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,405,415,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,419" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>15.7</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016760" storagetype="uint16" endian="big" sizex="15" sizey="6" cellIndices="0,4,-1,8,12,-1,16,20,24,-1,28,32,36,-1,40,70,74,78,82,86,-1,90,94,98,-1,102,106,110,-1,114,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,65,119,-1,-1,-1,123,127,131,135,139,143,147,151,155,159,163,401,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,405,415,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,419" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016760" storagetype="uint16" endian="big" sizex="15" sizey="7" cellIndices="0,4,-1,8,12,-1,16,20,24,-1,28,32,36,-1,40,70,74,78,82,86,-1,90,94,98,-1,102,106,110,-1,114,168,172,176,180,184,-1,188,192,196,-1,200,204,208,-1,212,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,65,119,-1,-1,-1,123,127,131,135,139,143,147,151,155,159,163,217,-1,-1,-1,221,225,229,233,237,241,245,249,253,257,261,415,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,419" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016760" storagetype="uint16" endian="big" sizex="15" sizey="8" cellIndices="0,4,-1,8,12,-1,16,20,24,-1,28,32,36,-1,40,70,74,78,82,86,-1,90,94,98,-1,102,106,110,-1,114,168,172,176,180,184,-1,188,192,196,-1,200,204,208,-1,212,266,270,274,278,282,-1,286,290,294,-1,298,302,306,-1,310,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,65,119,-1,-1,-1,123,127,131,135,139,143,147,151,155,159,163,217,-1,-1,-1,221,225,229,233,237,241,245,249,253,257,261,315,-1,-1,319,323,327,331,335,339,343,347,351,355,359,363" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x0171C2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x016D80" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,-1,36,41,-1,-1,-1,-1,-1,-1,-1,45,49,53,559,-1,-1,-1,-1,-1,-1,-1,-1,-1,563,573,-1,-1,-1,-1,-1,-1,-1,-1,-1,577,587,-1,-1,-1,-1,-1,-1,-1,-1,-1,591" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x016D80" storagetype="uint16" endian="big" sizex="13" sizey="6" cellIndices="0,4,8,-1,12,16,20,-1,24,28,32,-1,36,58,62,66,-1,70,74,78,-1,82,86,90,-1,94,41,-1,-1,-1,-1,-1,-1,-1,-1,-1,45,49,53,99,-1,103,107,111,115,119,123,127,131,135,139,143,573,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,577,587,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,591" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="13">
    <data>0.0</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x016FF0" storagetype="uint16" endian="big" sizex="13" sizey="7" cellIndices="0,4,8,-1,12,16,20,-1,24,28,32,-1,36,58,62,66,-1,70,74,78,-1,82,86,90,-1,94,148,-1,-1,-1,152,156,160,-1,164,168,172,-1,176,41,-1,-1,-1,-1,-1,-1,-1,-1,-1,45,49,53,99,-1,103,107,111,115,119,123,127,131,135,139,143,181,-1,-1,-1,-1,-1,185,189,193,197,201,205,209,219,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,223" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="13">
    <data>0.0</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x016D80" storagetype="uint16" endian="big" sizex="14" sizey="8" cellIndices="0,-1,4,8,-1,12,16,20,-1,24,28,32,-1,36,58,-1,62,66,-1,70,74,78,-1,82,86,90,-1,94,148,-1,-1,-1,-1,152,156,160,-1,164,168,172,-1,176,214,218,222,226,-1,230,234,238,-1,242,246,250,-1,254,41,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,45,49,53,99,-1,-1,103,107,111,115,119,123,127,131,135,139,143,181,-1,-1,-1,-1,-1,-1,185,189,193,197,201,205,209,259,-1,263,267,271,275,279,283,287,291,295,299,303,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x016062" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x015DE8" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,-1,36,41,-1,-1,-1,-1,-1,-1,-1,45,49,53,331,-1,-1,-1,-1,-1,-1,-1,-1,-1,335,345,-1,-1,-1,-1,-1,-1,-1,-1,-1,349,359,-1,-1,-1,-1,-1,-1,-1,-1,-1,363" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x015DE8" storagetype="uint16" endian="big" sizex="13" sizey="6" cellIndices="0,4,8,-1,12,16,20,-1,24,28,32,-1,36,58,62,66,-1,70,74,78,-1,82,86,90,-1,94,41,-1,-1,-1,-1,-1,-1,-1,-1,-1,45,49,53,99,-1,103,107,111,115,119,123,127,131,135,139,143,345,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,349,359,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,363" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="13">
    <data>0.0</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x015DE8" storagetype="uint16" endian="big" sizex="13" sizey="7" cellIndices="0,4,8,-1,12,16,20,-1,24,28,32,-1,36,58,62,66,-1,70,74,78,-1,82,86,90,-1,94,148,-1,-1,-1,152,156,160,-1,164,168,172,-1,176,41,-1,-1,-1,-1,-1,-1,-1,-1,-1,45,49,53,99,-1,103,107,111,115,119,123,127,131,135,139,143,181,-1,-1,-1,-1,-1,185,189,193,197,201,205,209,359,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,363" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="13">
    <data>0.0</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x015DE8" storagetype="uint16" endian="big" sizex="14" sizey="8" cellIndices="0,-1,4,8,-1,12,16,20,-1,24,28,32,-1,36,58,-1,62,66,-1,70,74,78,-1,82,86,90,-1,94,148,-1,-1,-1,-1,152,156,160,-1,164,168,172,-1,176,214,218,222,226,-1,230,234,238,-1,242,246,250,-1,254,41,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,45,49,53,99,-1,-1,103,107,111,115,119,123,127,131,135,139,143,181,-1,-1,-1,-1,-1,-1,185,189,193,197,201,205,209,259,-1,263,267,271,275,279,283,287,291,295,299,303,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x0166FA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x016410" storagetype="uint16" endian="big" sizex="12" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,36,-1,40,45,-1,-1,-1,-1,-1,-1,49,53,57,61,65,387,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,391,401,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,405,415,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,419" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>15.7</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x016410" storagetype="uint16" endian="big" sizex="15" sizey="6" cellIndices="0,4,-1,8,12,-1,16,20,24,-1,28,32,36,-1,40,70,74,78,82,86,-1,90,94,98,-1,102,106,110,-1,114,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,65,119,-1,-1,-1,123,127,131,135,139,143,147,151,155,159,163,401,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,405,415,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,419" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x016410" storagetype="uint16" endian="big" sizex="15" sizey="7" cellIndices="0,4,-1,8,12,-1,16,20,24,-1,28,32,36,-1,40,70,74,78,82,86,-1,90,94,98,-1,102,106,110,-1,114,168,172,176,180,184,-1,188,192,196,-1,200,204,208,-1,212,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,65,119,-1,-1,-1,123,127,131,135,139,143,147,151,155,159,163,217,-1,-1,-1,221,225,229,233,237,241,245,249,253,257,261,415,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,419" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x016410" storagetype="uint16" endian="big" sizex="15" sizey="8" cellIndices="0,4,-1,8,12,-1,16,20,24,-1,28,32,36,-1,40,70,74,78,82,86,-1,90,94,98,-1,102,106,110,-1,114,168,172,176,180,184,-1,188,192,196,-1,200,204,208,-1,212,266,270,274,278,282,-1,286,290,294,-1,298,302,306,-1,310,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,65,119,-1,-1,-1,123,127,131,135,139,143,147,151,155,159,163,217,-1,-1,-1,221,225,229,233,237,241,245,249,253,257,261,315,-1,-1,319,323,327,331,335,339,343,347,351,355,359,363" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x0163AA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x0160C8" storagetype="uint16" endian="big" sizex="12" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,36,-1,40,45,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,383,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,387,397,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,401,411,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,415" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x0160C8" storagetype="uint16" endian="big" sizex="15" sizey="6" cellIndices="0,4,8,-1,12,-1,16,20,24,-1,28,32,36,-1,40,66,70,74,78,82,-1,86,90,94,-1,98,102,106,-1,110,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,115,-1,-1,-1,119,123,127,131,135,139,143,147,151,155,159,397,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,401,411,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,415" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x0160C8" storagetype="uint16" endian="big" sizex="15" sizey="7" cellIndices="0,4,8,-1,12,-1,16,20,24,-1,28,32,36,-1,40,66,70,74,78,82,-1,86,90,94,-1,98,102,106,-1,110,164,168,172,176,180,-1,184,188,192,-1,196,200,204,-1,208,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,115,-1,-1,-1,119,123,127,131,135,139,143,147,151,155,159,213,-1,-1,-1,217,221,225,229,233,237,241,245,249,253,257,411,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,415" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x0160C8" storagetype="uint16" endian="big" sizex="16" sizey="8" cellIndices="0,-1,4,8,-1,12,-1,16,20,24,-1,28,32,36,-1,40,66,-1,70,74,78,82,-1,86,90,94,-1,98,102,106,-1,110,164,-1,168,172,176,180,-1,184,188,192,-1,196,200,204,-1,208,262,266,-1,270,274,278,-1,282,286,290,-1,294,298,302,-1,306,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,53,57,61,115,-1,-1,-1,-1,119,123,127,131,135,139,143,147,151,155,159,213,-1,-1,-1,-1,217,221,225,229,233,237,241,245,249,253,257,311,-1,-1,-1,315,319,323,327,331,335,339,343,347,351,355,359" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="16">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EAA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EAC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EE4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EE6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F92" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F94" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F1E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F20" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FCC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FCE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012040" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012042" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F58" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F5A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012006" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012008" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01207A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01207C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120B4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120B6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x0120F0" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x0120F2" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x012140" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x012142" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121A2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121A4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012204" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012206" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01226E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x012270" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122D0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x012332" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012334" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012394" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012396" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x01244C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01244E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124AE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124B0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01D85C" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D85C as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01D8B2" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8B2 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01D8B0" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8B0 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01D88C" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D88C as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01D8AE" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8AE as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01D854" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D854 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01D8AC" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8AC as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01D856" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D856 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01D86E" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D86E as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01D870" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D870 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01D872" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D872 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01D874" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D874 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01D8CA" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8CA as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01D8AA" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8AA as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01D862" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D862 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01D86C" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D86C as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01D86A" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D86A as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01D8EE" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8EE as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01D864" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D864 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01D8EC" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8EC as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01D866" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D866 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01D8EA" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8EA as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01D8A8" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8A8 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01D8E8" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8E8 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01D8A6" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8A6 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01D8E6" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8E6 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01D8C8" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8C8 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01D8A4" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8A4 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01D910" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D910 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01D90E" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D90E as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01D90C" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D90C as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01D90A" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D90A as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01D908" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D908 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01D906" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D906 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01D904" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D904 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01D912" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D912 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01D868" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D868 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01D876" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D876 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01D8D4" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8D4 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01D8D8" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8D8 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01D8D6" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8D6 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01D8BC" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8BC as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01D8BA" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8BA as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01D8B8" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8B8 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01D8B6" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8B6 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01D8CE" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8CE as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01D8CC" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8CC as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01D8B4" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8B4 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01D8FC" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8FC as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01D8FA" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8FA as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01D8F8" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8F8 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01D8F6" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8F6 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01D8F4" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D8F4 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91F0217100</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB436P</internalidstring>
   <caseid>Q3B</caseid>
   <ecuid>91F0217100</ecuid>
   <version>91F0217100</version>
   <year>2003</year>
   <market>USDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91F0217100 (USDM Outback 03)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91F0217100  (cal ID MB436P, USDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01C481" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01C481" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01049C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010518" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x010500" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01054A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010532" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01057C" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010564" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011552" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x01153E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01157C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011568" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115A6" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011592" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115D0" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x0115BC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115FA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115E6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01167A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011666" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116A4" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011690" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116CE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x0116BA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116F8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116E4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011722" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x01170E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DB6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DAC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E04" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E38" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E2E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E44" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E64" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E5A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E7A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E70" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E90" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E86" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01136C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011362" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011382" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011378" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011398" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113AE" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113A4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113C4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113BA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108EA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108D6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010914" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010900" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118D8" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x0118CC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011766" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011750" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011794" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01177E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117C2" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x0117AC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117F0" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01181E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x011808" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01194E" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x01192E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011990" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011970" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01186A" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011854" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <!-- ============ Record-format curves ============ -->
  <table type="3D" name="Temp Sensor 1 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x008080" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 1 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x008082" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Temp Sensor 2 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x0081EA" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 2 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x0081EC" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Torque Converter Slip Pressure Factor - slip ratio" category="Transmission - Signal Response Curves" storageaddress="0x008334" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="turbine/engine ratio" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>slip ratio</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Torque Converter Slip Pressure Factor - factor" category="Transmission - Signal Response Curves" storageaddress="0x008336" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82AC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008378" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82AC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00837A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="CAN 0x412 Signal Curve - Breakpoint" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DA" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="CAN 0x412 Signal Curve - Value" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DC" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve (8428) - °C" category="Transmission - Temperature Curves" storageaddress="0x00842A" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve (8428) - factor" category="Transmission - Temperature Curves" storageaddress="0x00842C" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 1 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008490" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 1 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008492" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 2 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0084EA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 2 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0084EC" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 3 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x00853C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 3 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00853E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 4 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008576" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 4 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008578" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 5 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0085B2" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 5 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0085B4" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 1 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EE88" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 1 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EE8A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 2 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EEC2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 2 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EEC4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 3 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00EEFC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 3 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00EEFE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 1 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010928" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 1 of 3 - 1/256" category="Transmission - Reference Speed" storageaddress="0x01092A" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 1 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01097A" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 1 of 2 - 1/256" category="Transmission - Signal Response Curves" storageaddress="0x01097C" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010B7C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010B7E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Hysteresis Curve 0x00F610 - Breakpoint" category="Transmission - Uncategorised Curves" storageaddress="0x010D2C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Hysteresis Curve 0x00F610 - Value" category="Transmission - Uncategorised Curves" storageaddress="0x010D2E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 2 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010F04" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 2 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010F06" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 3 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010F6C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 3 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010F6E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010FD4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010FD6" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01103C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01103E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0110A4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0110A6" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01110C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01110E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 1 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x0112D0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 1 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x0112D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 2 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x0118E8" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 2 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x0118EA" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 3 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011902" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 3 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011904" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 4 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011B84" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 4 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011B86" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 5 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011D34" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 5 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011D36" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01D30A" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01D30C" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01D34C" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01D34E" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 1) - °C" category="Transmission - Temperature Curves" storageaddress="0x01D39E" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 1) - factor" category="Transmission - Temperature Curves" storageaddress="0x01D3A0" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 2) - °C" category="Transmission - Temperature Curves" storageaddress="0x01D8F4" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 2) - factor" category="Transmission - Temperature Curves" storageaddress="0x01D8F6" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01D980" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01D982" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01DCFA" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01DCFC" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x01710E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x016F4C" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,-1,-1,41,45,239,-1,-1,-1,-1,-1,-1,-1,243,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x016F4C" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,-1,20,24,-1,28,32,50,54,58,62,66,-1,70,74,-1,78,82,37,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,95,-1,99,253,-1,-1,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x016F4C" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,12,16,-1,20,24,-1,28,32,50,54,58,62,66,-1,70,74,-1,78,82,104,108,112,116,120,-1,124,128,-1,132,136,37,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,95,-1,99,141,-1,-1,-1,149,-1,-1,153,-1,-1,157,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x016F4C" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,4,8,12,16,-1,20,-1,24,-1,28,32,50,54,58,62,66,-1,70,-1,74,-1,78,82,104,108,112,116,120,-1,124,-1,128,-1,132,136,162,166,170,174,178,-1,182,-1,186,-1,190,194,37,-1,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,-1,95,-1,99,141,-1,-1,-1,149,-1,-1,-1,153,-1,-1,157,199,-1,-1,-1,207,-1,-1,211,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x017606" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017444" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,-1,-1,41,45,239,-1,-1,-1,-1,-1,-1,-1,243,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017444" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,-1,20,24,-1,28,32,50,54,58,62,66,-1,70,74,-1,78,82,37,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,95,-1,99,253,-1,-1,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017444" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,12,16,-1,20,24,-1,28,32,50,54,58,62,66,-1,70,74,-1,78,82,104,108,112,116,120,-1,124,128,-1,132,136,37,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,95,-1,99,141,-1,-1,-1,149,-1,-1,153,-1,-1,157,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017444" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,4,8,12,16,-1,20,-1,24,-1,28,32,50,54,58,62,66,-1,70,-1,74,-1,78,82,104,108,112,116,120,-1,124,-1,128,-1,132,136,162,166,170,174,178,-1,182,-1,186,-1,190,194,37,-1,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,-1,95,-1,99,141,-1,-1,-1,149,-1,-1,-1,153,-1,-1,157,199,-1,-1,-1,207,-1,-1,211,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x016EE6" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x016D94" storagetype="uint16" endian="big" sizex="6" sizey="5" cellIndices="0,4,8,12,16,20,25,29,-1,-1,-1,33,183,-1,-1,-1,-1,187,197,-1,-1,-1,-1,201,211,-1,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="6">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x016D94" storagetype="uint16" endian="big" sizex="7" sizey="6" cellIndices="0,-1,4,8,12,16,20,38,-1,42,46,-1,50,54,25,-1,29,-1,-1,-1,33,59,63,-1,67,-1,-1,71,197,-1,-1,-1,-1,-1,201,211,-1,-1,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x016D94" storagetype="uint16" endian="big" sizex="7" sizey="7" cellIndices="0,-1,4,8,12,16,20,38,-1,42,46,-1,50,54,76,80,-1,84,-1,-1,88,25,-1,29,-1,-1,-1,33,59,63,-1,67,-1,-1,71,93,101,-1,105,-1,-1,109,211,-1,-1,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x016D94" storagetype="uint16" endian="big" sizex="7" sizey="8" cellIndices="0,-1,4,8,12,16,20,38,-1,42,46,-1,50,54,76,80,-1,84,-1,-1,88,114,118,122,126,130,134,138,25,-1,29,-1,-1,-1,33,59,63,-1,67,-1,-1,71,93,101,-1,105,-1,-1,109,143,151,-1,155,-1,-1,159" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x0168A4" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x0173B4" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x016814" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017324" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016784" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x017294" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x0166F4" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017204" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x016664" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x017174" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x0165FE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016484" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,24,28,33,-1,-1,-1,-1,37,-1,41,203,-1,-1,-1,-1,-1,-1,207,217,-1,-1,-1,-1,-1,-1,221,231,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>3.1</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016484" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,-1,16,20,24,28,46,50,54,58,-1,62,66,70,74,33,-1,-1,-1,-1,-1,37,-1,41,79,-1,-1,-1,83,-1,87,-1,91,217,-1,-1,-1,-1,-1,-1,-1,221,231,-1,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>3.1</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016484" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,-1,16,20,24,28,46,50,54,58,-1,62,66,70,74,96,100,104,108,-1,112,-1,-1,116,33,-1,-1,-1,-1,-1,37,-1,41,79,-1,-1,-1,83,-1,87,-1,91,121,-1,-1,125,-1,-1,-1,129,133,231,-1,-1,-1,-1,-1,-1,-1,235" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>3.1</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016484" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,-1,12,-1,16,20,24,28,46,50,-1,54,-1,58,-1,62,66,70,74,96,100,-1,104,-1,108,-1,112,-1,-1,116,138,142,146,150,-1,154,-1,-1,-1,-1,158,33,-1,-1,-1,-1,-1,-1,-1,37,-1,41,79,-1,-1,-1,-1,-1,83,-1,87,-1,91,121,-1,-1,-1,-1,125,-1,-1,-1,129,133,163,-1,-1,-1,167,-1,-1,171,175,-1,179" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>3.1</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x016D2E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x016934" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,-1,-1,41,45,49,523,-1,-1,-1,-1,-1,-1,-1,-1,527,537,-1,-1,-1,-1,-1,-1,-1,-1,541,551,-1,-1,-1,-1,-1,-1,-1,-1,555" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x016934" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,-1,20,24,28,-1,32,54,58,62,66,70,-1,74,78,82,-1,86,37,-1,-1,-1,-1,-1,-1,-1,41,45,49,91,-1,95,99,103,107,111,115,119,123,127,537,-1,-1,-1,-1,-1,-1,-1,-1,-1,541,551,-1,-1,-1,-1,-1,-1,-1,-1,-1,555" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x016B84" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,12,16,-1,20,24,28,-1,32,54,58,62,66,70,-1,74,78,82,-1,86,132,-1,-1,-1,136,-1,140,144,148,-1,152,37,-1,-1,-1,-1,-1,-1,-1,41,45,49,91,-1,95,99,103,107,111,115,119,123,127,157,-1,-1,161,165,169,173,177,181,185,189,199,-1,-1,-1,-1,-1,-1,-1,-1,-1,203" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x016934" storagetype="uint16" endian="big" sizex="13" sizey="8" cellIndices="0,-1,4,-1,8,12,16,-1,20,24,28,-1,32,54,-1,58,-1,62,66,70,-1,74,78,82,-1,86,132,-1,-1,-1,136,140,144,-1,148,152,156,-1,160,202,206,210,-1,214,218,222,-1,226,230,234,-1,238,37,-1,-1,-1,-1,-1,-1,-1,-1,-1,41,45,49,91,-1,-1,-1,95,99,103,107,111,115,119,123,127,165,-1,-1,-1,-1,169,173,177,181,185,189,193,197,243,247,251,255,259,263,267,271,275,279,283,287,291" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="13">
    <data>0.0</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x01600E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x015E4C" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,-1,-1,41,45,239,-1,-1,-1,-1,-1,-1,-1,243,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x015E4C" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,-1,20,24,-1,28,32,50,54,58,62,66,-1,70,74,-1,78,82,37,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,95,-1,99,253,-1,-1,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x015E4C" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,12,16,-1,20,24,-1,28,32,50,54,58,62,66,-1,70,74,-1,78,82,104,108,112,116,120,-1,124,128,-1,132,136,37,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,95,-1,99,141,-1,-1,-1,149,-1,-1,153,-1,-1,157,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x015E4C" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,4,8,12,16,-1,20,-1,24,-1,28,32,50,54,58,62,66,-1,70,-1,74,-1,78,82,104,108,112,116,120,-1,124,-1,128,-1,132,136,162,166,170,174,178,-1,182,-1,186,-1,190,194,37,-1,-1,-1,-1,-1,-1,-1,-1,-1,41,45,87,-1,-1,-1,-1,91,-1,-1,-1,95,-1,99,141,-1,-1,-1,149,-1,-1,-1,153,-1,-1,157,199,-1,-1,-1,207,-1,-1,211,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x01641E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x01629C" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,24,28,33,-1,-1,37,-1,-1,-1,41,207,-1,-1,-1,-1,-1,-1,211,221,-1,-1,-1,-1,-1,-1,225,235,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x01629C" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,46,50,54,58,62,66,70,-1,74,33,-1,-1,37,-1,-1,-1,-1,41,79,-1,83,-1,87,-1,-1,91,95,221,-1,-1,-1,-1,-1,-1,-1,225,235,-1,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x01629C" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,20,24,-1,28,46,50,54,58,62,66,70,-1,74,100,-1,-1,104,108,112,116,-1,120,33,-1,-1,37,-1,-1,-1,-1,41,79,-1,83,-1,87,-1,-1,91,95,125,-1,133,-1,137,-1,-1,-1,141,235,-1,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x01629C" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,4,8,12,16,20,24,-1,28,46,50,54,58,62,66,70,-1,74,100,-1,-1,104,108,112,116,-1,120,146,-1,150,154,158,-1,-1,-1,162,33,-1,-1,37,-1,-1,-1,-1,41,79,-1,83,-1,87,-1,-1,91,95,125,-1,133,-1,137,-1,-1,-1,141,167,-1,175,-1,179,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x016236" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x016074" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,41,-1,-1,45,239,-1,-1,-1,-1,-1,-1,-1,243,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x016074" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,28,32,50,54,58,62,66,70,74,78,82,37,-1,-1,-1,-1,41,-1,-1,45,87,-1,-1,-1,91,-1,95,-1,99,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x016074" storagetype="uint16" endian="big" sizex="12" sizey="7" cellIndices="0,4,8,12,-1,16,-1,20,-1,24,28,32,50,54,58,62,-1,66,-1,70,-1,74,78,82,104,108,112,116,-1,120,-1,124,-1,128,132,136,37,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,87,-1,-1,-1,-1,91,-1,-1,-1,95,-1,99,141,-1,-1,-1,145,-1,149,-1,153,-1,-1,157,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x016074" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,4,8,12,-1,16,-1,20,-1,24,28,32,50,54,58,62,-1,66,-1,70,-1,74,78,82,104,108,112,116,-1,120,-1,124,-1,128,132,136,162,166,170,174,-1,178,-1,182,-1,186,190,194,37,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,87,-1,-1,-1,-1,91,-1,-1,-1,95,-1,99,141,-1,-1,-1,145,-1,149,-1,153,-1,-1,157,199,-1,-1,-1,207,-1,-1,211,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F0E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F10" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F48" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F4A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FF6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FF8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F82" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F84" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012030" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012032" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120A4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120A6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FBC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FBE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01206A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01206C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120DE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120E0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012118" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01211A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x012154" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x012156" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121A4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121A6" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x012206" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x012208" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012268" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x01226A" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122D4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x012334" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x012336" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x012396" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012398" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x0123F8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x0123FA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124B0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124B2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x012512" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x012514" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF0" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF0 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01CF46" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF46 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01CF44" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF44 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01CF20" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF20 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01CF42" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF42 as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01CEE8" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEE8 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01CF40" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF40 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01CEEA" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEEA as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01CF02" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF02 as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01CF04" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF04 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01CF06" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF06 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01CF08" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF08 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01CF5E" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF5E as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01CF3E" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF3E as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF6" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF6 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01CF00" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF00 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01CEFE" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEFE as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01CF82" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF82 as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF8" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF8 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01CF80" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF80 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01CEFA" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEFA as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01CF7E" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF7E as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01CF3C" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF3C as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01CF7C" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF7C as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01CF3A" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF3A as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01CF7A" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF7A as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01CF5C" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF5C as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01CF38" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF38 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01CFA4" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CFA4 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01CFA2" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CFA2 as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01CFA0" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CFA0 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01CF9E" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF9E as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01CF9C" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF9C as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01CF9A" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF9A as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01CF98" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF98 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01CFA6" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CFA6 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01CEFC" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEFC as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01CF0A" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF0A as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01CF68" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF68 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01CF6C" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF6C as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01CF6A" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF6A as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01CF50" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF50 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01CF4E" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF4E as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01CF4C" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF4C as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01CF4A" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF4A as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01CF62" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF62 as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01CF60" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF60 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01CF48" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF48 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01CF90" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF90 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01CF8E" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF8E as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01CF8C" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF8C as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01CF8A" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF8A as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01CF88" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF88 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_ABD1A03100</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB4434</internalidstring>
   <caseid>Q1F</caseid>
   <ecuid>ABD1A03100</ecuid>
   <version>ABD1A03100</version>
   <year>2005</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>ABD1A03100 (JDM Legacy GT 2005)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: ABD1A03100  (cal ID MB4434, JDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01D1CD" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01D1CD" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B2" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01049A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104CC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010516" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x0104FE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010548" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010530" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01057A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010562" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011552" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x01153E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01157C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011568" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115A6" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011592" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115D0" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x0115BC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115FA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115E6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01167A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011666" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116A4" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011690" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116CE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x0116BA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116F8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116E4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011722" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x01170E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DB6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DAC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E04" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E38" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E2E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E44" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E64" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E5A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E7A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E70" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E90" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E86" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01136C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011362" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011382" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011378" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011398" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113AE" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113A4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113C4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113BA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108EA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108D6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010914" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010900" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118D8" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x0118CC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011766" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011750" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011794" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01177E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117C2" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x0117AC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117F0" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01181E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x011808" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01194E" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x01192E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011990" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011970" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01186A" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011854" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x017982" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x017748" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x017748" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x017748" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x017748" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x017E7A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017C88" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,29,-1,-1,-1,-1,-1,33,37,263,-1,-1,-1,-1,-1,-1,267,277,-1,-1,-1,-1,-1,-1,281,291,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017C88" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,4,8,12,16,20,-1,24,42,46,50,54,58,62,66,-1,70,29,-1,-1,-1,-1,-1,-1,33,37,75,-1,79,83,87,91,95,99,103,277,-1,-1,-1,-1,-1,-1,-1,281,291,-1,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017C88" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,-1,4,8,12,16,20,-1,24,42,46,50,54,58,62,66,-1,70,108,112,116,120,124,128,132,-1,136,29,-1,-1,-1,-1,-1,-1,33,37,75,-1,79,83,87,91,95,99,103,141,-1,145,149,153,157,161,165,169,291,-1,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017C88" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,-1,4,8,12,16,20,-1,24,42,46,50,54,58,62,66,-1,70,108,112,116,120,124,128,132,-1,136,174,178,182,186,190,194,198,-1,202,29,-1,-1,-1,-1,-1,-1,33,37,75,-1,79,83,87,91,95,99,103,141,-1,145,149,153,157,161,165,169,207,211,215,219,223,227,231,235,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x0176E2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x0174C8" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,16,-1,20,25,29,33,37,41,45,49,283,-1,-1,-1,-1,-1,287,297,-1,-1,-1,-1,-1,301,311,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x0174C8" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,16,-1,20,54,-1,58,62,66,70,-1,-1,74,25,-1,-1,29,33,37,41,45,49,79,83,-1,87,91,95,99,-1,103,297,-1,-1,-1,-1,-1,-1,-1,301,311,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x0174C8" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,16,-1,20,54,-1,-1,58,62,66,70,-1,-1,74,108,-1,-1,112,116,120,124,128,132,136,25,-1,-1,-1,29,33,37,41,45,49,79,83,-1,-1,87,91,95,99,-1,103,141,145,149,153,157,161,165,169,173,177,311,-1,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x0174C8" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,-1,-1,-1,4,8,12,16,-1,20,54,-1,-1,58,62,66,70,-1,-1,74,108,-1,-1,112,116,120,124,128,132,136,182,186,190,194,198,202,206,210,214,218,25,-1,-1,-1,29,33,37,41,45,49,79,83,-1,-1,87,91,95,99,-1,103,141,145,149,153,157,161,165,169,173,177,223,227,231,235,239,243,247,251,255,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x01705A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x017C1A" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="37,41,0,4,14,18,28,32,46,50" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x016FD8" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="0,4,9,13,23,27,37,41,51,55" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017B90" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,46,50,9,13,23,27,37,41,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016F58" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,9,13,27,31,41,45,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x017B08" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,50,54,9,13,27,31,41,45,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x016ED0" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,9,13,27,31,45,49,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017A78" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x016E40" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x0179E8" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x016DDA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016BD0" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,275,-1,-1,-1,-1,-1,279,289,-1,-1,-1,-1,-1,293,303,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016BD0" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,-1,-1,74,21,-1,-1,25,29,33,37,41,45,79,83,-1,-1,87,91,95,99,103,289,-1,-1,-1,-1,-1,-1,-1,293,303,-1,-1,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016BD0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,-1,-1,74,108,-1,112,116,120,124,128,132,-1,136,21,-1,-1,-1,25,29,33,37,41,45,79,83,-1,-1,-1,87,91,95,99,103,141,145,-1,149,153,157,161,165,169,173,303,-1,-1,-1,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016BD0" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,-1,-1,74,108,-1,-1,112,116,120,124,128,132,-1,136,178,-1,-1,182,186,190,194,198,202,-1,206,21,-1,-1,-1,-1,25,29,33,37,41,45,79,83,-1,-1,-1,-1,87,91,95,99,103,141,145,-1,-1,149,153,157,161,165,169,173,211,215,219,223,227,231,235,239,243,247,251" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x017462" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x0170C0" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,-1,41,45,479,-1,-1,-1,-1,-1,-1,-1,483,493,-1,-1,-1,-1,-1,-1,-1,497,507,-1,-1,-1,-1,-1,-1,-1,511" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x0170C0" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,87,91,95,99,103,107,493,-1,-1,-1,-1,-1,-1,-1,497,507,-1,-1,-1,-1,-1,-1,-1,511" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x0172D0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,50,-1,54,58,62,66,70,74,-1,78,112,116,120,124,128,132,136,140,-1,144,33,-1,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,87,91,95,99,103,107,149,-1,-1,153,157,161,165,169,173,177,187,-1,-1,-1,-1,-1,-1,-1,-1,191" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x0170C0" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,50,-1,-1,54,58,62,66,70,74,-1,78,112,-1,116,120,124,128,132,136,140,-1,144,182,-1,186,190,194,198,202,206,210,-1,214,33,-1,-1,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,-1,87,91,95,99,103,107,149,-1,-1,-1,153,157,161,165,169,173,177,219,223,227,231,235,239,243,247,251,255,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x01665A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x016440" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,-1,41,45,283,-1,-1,-1,-1,-1,-1,-1,287,297,-1,-1,-1,-1,-1,-1,-1,301,311,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x016440" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,87,91,95,99,103,107,297,-1,-1,-1,-1,-1,-1,-1,301,311,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x016440" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,50,-1,54,58,62,66,70,74,-1,78,112,116,120,124,128,132,136,140,-1,144,33,-1,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,87,91,95,99,103,107,149,-1,-1,153,157,161,165,169,173,177,311,-1,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x016440" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,50,-1,-1,54,58,62,66,70,74,-1,78,112,-1,116,120,124,128,132,136,140,-1,144,182,-1,186,190,194,198,202,206,210,-1,214,33,-1,-1,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,-1,87,91,95,99,103,107,149,-1,-1,-1,153,157,161,165,169,173,177,219,223,227,231,235,239,243,247,251,255,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x016B6A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x016960" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,275,-1,-1,-1,-1,-1,279,289,-1,-1,-1,-1,-1,293,303,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x016960" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,-1,-1,74,21,-1,-1,25,29,33,37,41,45,79,83,-1,-1,87,91,95,99,103,289,-1,-1,-1,-1,-1,-1,-1,293,303,-1,-1,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x016960" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,-1,-1,74,108,-1,112,116,120,124,128,132,-1,136,21,-1,-1,-1,25,29,33,37,41,45,79,83,-1,-1,-1,87,91,95,99,103,141,145,-1,149,153,157,161,165,169,173,303,-1,-1,-1,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x016960" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,-1,-1,74,108,-1,-1,112,116,120,124,128,132,-1,136,178,-1,-1,182,186,190,194,198,202,-1,206,21,-1,-1,-1,-1,25,29,33,37,41,45,79,83,-1,-1,-1,-1,87,91,95,99,103,141,145,-1,-1,149,153,157,161,165,169,173,211,215,219,223,227,231,235,239,243,247,251" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x0168FA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x0166C0" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x0166C0" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x0166C0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x0166C0" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0123F6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0123F8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012430" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012432" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124DE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124E0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01246A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01246C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012518" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01251A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01258C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01258E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124A4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124A6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012552" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012554" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0125C6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0125C8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012600" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012602" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x01263C" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x01263E" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x01268C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x01268E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0126EE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0126F0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012750" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012752" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x0127BA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x0127BC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x01281C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x01281E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x01287E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012880" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x0128E0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x0128E2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x012998" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01299A" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0129F2" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0129F4" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01DC3C" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC3C as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01DC92" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC92 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01DC90" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC90 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01DC6C" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC6C as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01DC8E" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC8E as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01DC34" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC34 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01DC8C" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC8C as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01DC36" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC36 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01DC4E" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC4E as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01DC50" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC50 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01DC52" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC52 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01DC54" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC54 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01DCAA" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCAA as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01DC8A" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC8A as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01DC42" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC42 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01DC4C" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC4C as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01DC4A" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC4A as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCE" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCE as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01DC44" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC44 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCC" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCC as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01DC46" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC46 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCA" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCA as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01DC88" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC88 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01DCC8" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCC8 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01DC86" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC86 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01DCC6" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCC6 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01DCA8" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCA8 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01DC84" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC84 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01DCF0" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCF0 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01DCEE" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCEE as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01DCEC" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCEC as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01DCEA" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCEA as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01DCE8" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCE8 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01DCE6" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCE6 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01DCE4" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCE4 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01DCF2" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCF2 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01DC48" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC48 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01DC56" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC56 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01DCB4" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCB4 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01DCB8" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCB8 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01DCB6" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCB6 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01DC9C" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC9C as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01DC9A" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC9A as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01DC98" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC98 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01DC96" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC96 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01DCAE" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCAE as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01DCAC" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCAC as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01DC94" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC94 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01DCDC" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCDC as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01DCDA" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCDA as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD8" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD8 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD6" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD6 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD4" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD4 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91D1207900</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB4373</internalidstring>
   <caseid>Q3P</caseid>
   <ecuid>91D1207900</ecuid>
   <version>91D1207900</version>
   <year>Unknown</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91D1207900 (Hitachi 31711AG589)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91D1207900  (cal ID MB4373, JDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01CA61" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01CA61" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01044E" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x010436" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010480" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x010468" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B2" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x01049A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x0104CC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010516" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x0104FE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0114EE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x0114DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011518" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011504" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011542" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x01152E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01156C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x011558" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011596" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x011582" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011616" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011602" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011640" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x01162C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01166A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x011656" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011694" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x011680" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116BE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x0116AA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D52" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D48" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D68" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D5E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D7E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D74" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D94" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D8A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DAA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DA0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DD4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DCA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DEA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DE0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E00" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DF6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E16" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E0C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E2C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E22" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011308" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0112FE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01131E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011314" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011334" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01132A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01134A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011340" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011360" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011356" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010886" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010872" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108B0" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01089C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x011874" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x011868" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011702" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x0116EC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011730" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01171A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01175E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x011748" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01178C" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x011776" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117BA" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x0117A4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0118EA" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x0118CA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01192C" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x01190C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011806" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x0117F0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <!-- ============ Record-format curves ============ -->
  <table type="3D" name="Temp Sensor 1 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x008080" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 1 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x008082" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Temp Sensor 2 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x0081EA" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 2 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x0081EC" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Torque Converter Slip Pressure Factor - slip ratio" category="Transmission - Signal Response Curves" storageaddress="0x008334" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="turbine/engine ratio" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>slip ratio</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Torque Converter Slip Pressure Factor - factor" category="Transmission - Signal Response Curves" storageaddress="0x008336" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82AC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008378" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82AC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00837A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="CAN 0x412 Signal Curve - Breakpoint" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DA" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="CAN 0x412 Signal Curve - Value" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DC" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve (8428) - °C" category="Transmission - Temperature Curves" storageaddress="0x00842A" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve (8428) - factor" category="Transmission - Temperature Curves" storageaddress="0x00842C" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 1 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008490" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 1 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008492" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 2 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0084EA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 2 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0084EC" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 3 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x00853C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 3 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00853E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 4 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008576" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 4 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008578" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 5 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0085B2" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 5 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0085B4" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 1 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00E1C0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 1 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00E1C2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 2 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00E1FA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 2 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00E1FC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 3 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00E234" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 3 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00E236" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 1 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x0108C4" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 1 of 3 - 1/256" category="Transmission - Reference Speed" storageaddress="0x0108C6" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 1 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010916" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 1 of 2 - 1/256" category="Transmission - Signal Response Curves" storageaddress="0x010918" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010B18" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010B1A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Hysteresis Curve 0x00F610 - Breakpoint" category="Transmission - Uncategorised Curves" storageaddress="0x010CC8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Hysteresis Curve 0x00F610 - Value" category="Transmission - Uncategorised Curves" storageaddress="0x010CCA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 2 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010EA0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 2 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010EA2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 3 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010F08" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 3 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010F0A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010F70" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010F72" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010FD8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010FDA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x011040" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x011042" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0110A8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0110AA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 1 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01126C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 1 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x01126E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 2 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011884" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 2 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011886" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 3 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01189E" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 3 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x0118A0" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 4 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011B20" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 4 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011B22" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 5 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011CD0" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 5 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011CD2" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01D8EA" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01D8EC" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01D92C" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01D92E" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 1) - °C" category="Transmission - Temperature Curves" storageaddress="0x01D97E" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 1) - factor" category="Transmission - Temperature Curves" storageaddress="0x01D980" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 2) - °C" category="Transmission - Temperature Curves" storageaddress="0x01DED4" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 2) - factor" category="Transmission - Temperature Curves" storageaddress="0x01DED6" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01DF60" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01DF62" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01E2DA" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01E2DC" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x017256" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x01701C" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x01701C" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x01701C" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x01701C" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x017746" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017544" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,-1,-1,41,45,271,-1,-1,-1,-1,-1,-1,-1,275,285,-1,-1,-1,-1,-1,-1,-1,289,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017544" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,285,-1,-1,-1,-1,-1,-1,-1,289,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017544" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,116,120,124,128,132,136,140,-1,144,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,149,-1,153,157,161,165,169,173,177,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017544" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,116,120,124,128,132,136,140,-1,144,182,186,190,194,198,202,206,-1,210,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,149,-1,153,157,161,165,169,173,177,215,219,223,227,231,235,239,243,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x016FB6" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x016D64" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,37,-1,-1,-1,-1,-1,41,45,49,53,57,311,-1,-1,-1,-1,-1,-1,-1,-1,-1,315,325,-1,-1,-1,-1,-1,-1,-1,-1,-1,329,339,-1,-1,-1,-1,-1,-1,-1,-1,-1,343" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x016D64" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,325,-1,-1,-1,-1,-1,-1,-1,-1,-1,329,339,-1,-1,-1,-1,-1,-1,-1,-1,-1,343" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x016D64" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,-1,168,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,173,-1,-1,-1,177,181,185,189,193,197,201,339,-1,-1,-1,-1,-1,-1,-1,-1,-1,343" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x016D64" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,-1,168,206,210,214,218,222,226,230,234,238,-1,242,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,173,-1,-1,-1,177,181,185,189,193,197,201,247,251,255,259,263,267,271,275,279,283,287" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x016A76" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x0174DE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x0169F4" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="0,4,9,13,23,27,37,41,51,55" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x01745C" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="0,4,9,13,23,27,37,41,51,55" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016974" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,9,13,27,31,41,45,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x0173DC" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,9,13,27,31,41,45,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x0168EC" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,9,13,27,31,45,49,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x01734C" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x01685C" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x0172BC" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x0167F6" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x01659C" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,37,-1,-1,-1,-1,-1,41,45,49,53,57,315,-1,-1,-1,-1,-1,-1,-1,-1,-1,319,329,-1,-1,-1,-1,-1,-1,-1,-1,-1,333,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x01659C" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,-1,32,62,66,70,74,78,82,86,90,94,-1,98,37,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,107,111,115,119,123,127,329,-1,-1,-1,-1,-1,-1,-1,-1,-1,333,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x01659C" storagetype="uint16" endian="big" sizex="12" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,28,-1,-1,32,62,-1,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,168,-1,172,37,-1,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,-1,107,111,115,119,123,127,177,-1,-1,-1,-1,181,185,189,193,197,201,205,343,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,347" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>9.4</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x01659C" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,-1,4,8,12,16,20,24,28,-1,-1,32,62,-1,66,70,74,78,82,86,90,94,-1,98,132,136,140,144,148,152,156,160,164,168,-1,172,210,-1,214,218,222,226,230,234,238,242,-1,246,37,-1,-1,-1,-1,-1,-1,41,45,49,53,57,103,-1,-1,-1,-1,-1,107,111,115,119,123,127,177,-1,-1,-1,-1,181,185,189,193,197,201,205,251,-1,255,259,263,267,271,275,279,283,287,291" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>9.4</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x016CFE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x016ADC" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,41,-1,45,49,287,-1,-1,-1,-1,-1,-1,-1,291,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x016ADC" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,54,58,62,66,70,74,78,-1,82,33,-1,-1,-1,37,41,-1,45,49,87,-1,-1,91,95,99,103,107,111,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x016ADC" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,54,-1,58,62,66,70,74,78,-1,82,116,120,124,128,132,136,140,144,-1,148,33,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,157,161,165,169,173,177,181,315,-1,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x016ADC" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,54,-1,-1,58,62,66,70,74,78,-1,82,116,-1,120,124,128,132,136,140,144,-1,148,186,-1,190,194,198,202,206,210,214,-1,218,33,-1,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,-1,157,161,165,169,173,177,181,223,227,231,235,239,243,247,251,255,259,263" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x015FCE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x015DAC" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,41,-1,45,49,287,-1,-1,-1,-1,-1,-1,-1,291,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x015DAC" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,54,58,62,66,70,74,78,-1,82,33,-1,-1,-1,37,41,-1,45,49,87,-1,-1,91,95,99,103,107,111,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x015DAC" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,54,-1,58,62,66,70,74,78,-1,82,116,120,124,128,132,136,140,144,-1,148,33,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,157,161,165,169,173,177,181,315,-1,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x015DAC" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,54,-1,-1,58,62,66,70,74,78,-1,82,116,-1,120,124,128,132,136,140,144,-1,148,186,-1,190,194,198,202,206,210,214,-1,218,33,-1,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,-1,157,161,165,169,173,177,181,223,227,231,235,239,243,247,251,255,259,263" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x016536" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x0162D4" storagetype="uint16" endian="big" sizex="11" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,-1,36,41,-1,-1,-1,-1,-1,45,49,53,57,61,319,-1,-1,-1,-1,-1,-1,-1,-1,-1,323,333,-1,-1,-1,-1,-1,-1,-1,-1,-1,337,347,-1,-1,-1,-1,-1,-1,-1,-1,-1,351" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x0162D4" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,20,24,28,32,-1,36,66,70,74,78,82,86,90,94,98,-1,102,41,-1,-1,-1,-1,-1,45,49,53,57,61,107,-1,-1,-1,-1,111,115,119,123,127,131,333,-1,-1,-1,-1,-1,-1,-1,-1,-1,337,347,-1,-1,-1,-1,-1,-1,-1,-1,-1,351" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x0162D4" storagetype="uint16" endian="big" sizex="12" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,28,32,-1,36,66,-1,70,74,78,82,86,90,94,98,-1,102,136,140,144,148,152,156,160,164,168,172,-1,176,41,-1,-1,-1,-1,-1,-1,45,49,53,57,61,107,-1,-1,-1,-1,-1,111,115,119,123,127,131,181,-1,-1,-1,-1,185,189,193,197,201,205,209,347,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,351" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>9.4</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x0162D4" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,-1,4,8,12,16,20,24,28,32,-1,36,66,-1,70,74,78,82,86,90,94,98,-1,102,136,140,144,148,152,156,160,164,168,172,-1,176,214,-1,218,222,226,230,234,238,242,246,-1,250,41,-1,-1,-1,-1,-1,-1,45,49,53,57,61,107,-1,-1,-1,-1,-1,111,115,119,123,127,131,181,-1,-1,-1,-1,185,189,193,197,201,205,209,255,-1,259,263,267,271,275,279,283,287,291,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>9.4</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x01626E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x016034" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x016034" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x016034" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x016034" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EAA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EAC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EE4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EE6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F92" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F94" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F1E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F20" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FCC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FCE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012040" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012042" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F58" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F5A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012006" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012008" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01207A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01207C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120B4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120B6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x0120F0" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x0120F2" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x012140" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x012142" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121A2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121A4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012204" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012206" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01226E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x012270" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122D0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x012332" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012334" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012394" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012396" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x01244C" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01244E" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124A6" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124A8" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01D4D0" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4D0 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01D526" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D526 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01D524" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D524 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01D500" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D500 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01D522" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D522 as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01D4C8" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4C8 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01D520" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D520 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01D4CA" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4CA as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E2" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E2 as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E4" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E4 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E6" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E6 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E8" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E8 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01D53E" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D53E as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01D51E" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D51E as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01D4D6" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4D6 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E0" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E0 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01D4DE" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4DE as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01D562" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D562 as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01D4D8" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4D8 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01D560" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D560 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01D4DA" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4DA as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01D55E" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D55E as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01D51C" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D51C as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01D55C" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D55C as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01D51A" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D51A as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01D55A" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D55A as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01D53C" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D53C as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01D518" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D518 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01D584" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D584 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01D582" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D582 as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01D580" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D580 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01D57E" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D57E as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01D57C" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D57C as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01D57A" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D57A as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01D578" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D578 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01D586" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D586 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01D4DC" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4DC as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01D4EA" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4EA as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01D548" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D548 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01D54C" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D54C as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01D54A" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D54A as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01D530" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D530 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01D52E" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D52E as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01D52C" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D52C as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01D52A" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D52A as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01D542" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D542 as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01D540" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D540 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01D528" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D528 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01D570" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D570 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01D56E" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D56E as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01D56C" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D56C as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01D56A" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D56A as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01D568" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D568 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_AAD1A07100</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB440X</internalidstring>
   <caseid>Q2P</caseid>
   <ecuid>AAD1A07100</ecuid>
   <version>AAD1A07100</version>
   <year>Unknown</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>AAD1A07100 (Hitachi 31711AJ782)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: AAD1A07100  (cal ID MB440X, JDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x010182" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x010182" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x010182" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01CD1D" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01CD1D" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104C6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x0104AE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104F8" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104E0" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01052A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x010512" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01055C" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010544" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01058E" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010576" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011566" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x011552" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011590" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x01157C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115BA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x0115A6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115E4" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x0115D0" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01160E" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115FA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01168E" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x01167A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116B8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x0116A4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116E2" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x0116CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01170C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116F8" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011736" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x011722" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE0" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E02" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E22" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E18" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E42" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E62" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E58" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E78" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E6E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E8E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E84" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010EA4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E9A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011380" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011376" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011396" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113AC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113A2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113C2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113B8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113D8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113CE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108FE" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108EA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010928" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010914" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118EC" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x0118E0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01177A" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011764" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117A8" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x011792" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117D6" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x0117C0" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011804" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117EE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011832" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x01181C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011962" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x011942" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0119A4" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011984" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01187E" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011868" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <!-- ============ Record-format curves ============ -->
  <table type="3D" name="Temp Sensor 1 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x008080" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 1 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x008082" storagetype="uint16" endian="big" sizex="1" sizey="90" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="90">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
    <data>42a</data>
    <data>42b</data>
    <data>43a</data>
    <data>43b</data>
    <data>44a</data>
    <data>44b</data>
    <data>45a</data>
    <data>45b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 1. Column 1 is the inverted raw ADC reading, column 2 the resulting temperature as (value - 40) degrees C. This is the calibration that defines what the sensor reads: editing it changes every temperature-dependent decision the TCU makes. Confirmed encoding.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION. Converts the raw ADC reading from the sensor into a temperature. The breakpoint is the ADC count, the value is what the TCU believes that count means.

This is what every temperature-dependent behaviour in the transmission ultimately reads, so changing it shifts the apparent temperature everywhere at once - including the cold-fluid pressure boost and the overheat protection. It is a calibration for the sensor, not a tuning knob.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Temp Sensor 2 Linearisation - ADC" category="Transmission - Sensor Calibration" storageaddress="0x0081EA" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="ADC counts (raw sensor reading)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>ADC</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Temp Sensor 2 Linearisation - °C" category="Transmission - Sensor Calibration" storageaddress="0x0081EC" storagetype="uint16" endian="big" sizex="1" sizey="82" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="82">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
    <data>27a</data>
    <data>27b</data>
    <data>28a</data>
    <data>28b</data>
    <data>29a</data>
    <data>29b</data>
    <data>30a</data>
    <data>30b</data>
    <data>31a</data>
    <data>31b</data>
    <data>32a</data>
    <data>32b</data>
    <data>33a</data>
    <data>33b</data>
    <data>34a</data>
    <data>34b</data>
    <data>35a</data>
    <data>35b</data>
    <data>36a</data>
    <data>36b</data>
    <data>37a</data>
    <data>37b</data>
    <data>38a</data>
    <data>38b</data>
    <data>39a</data>
    <data>39b</data>
    <data>40a</data>
    <data>40b</data>
    <data>41a</data>
    <data>41b</data>
   </table>
   <description>ADC-to-temperature curve for temperature sensor 2. Same encoding as sensor 1: column 1 inverted raw ADC, column 2 temperature as (value - 40) degrees C.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE SENSOR CALIBRATION, second channel. See the notes on Temp Sensor 1: same role, same warning.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Torque Converter Slip Pressure Factor - slip ratio" category="Transmission - Signal Response Curves" storageaddress="0x008334" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="turbine/engine ratio" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>slip ratio</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Torque Converter Slip Pressure Factor - factor" category="Transmission - Signal Response Curves" storageaddress="0x008336" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/1024" to_byte="x*1024" format="0.000" fineincrement="0.005" coarseincrement="0.05" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

TORQUE CONVERTER SLIP FACTOR. Part of the line pressure chain: engine torque from CAN 0x412 is multiplied by this factor, smoothed, multiplied again by the ATF temperature factor, and the result looks up the line pressure target.

The breakpoint is the turbine-to-engine speed ratio, so 1.000 is locked and lower numbers are more slip. Raising a value raises line pressure at that amount of slip, which firms up the clutches and speeds up shifts, at the cost of pump load and harsher engagement.

The scale is confirmed against the description posted by rimwall on the RomRaider forum: a ratio of 0.5 gives 1.392 here against his stated ~1.4, and low slip gives exactly 1.000 against his stated ~1.0.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82AC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008378" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82AC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00837A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82AC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="CAN 0x412 Signal Curve - Breakpoint" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DA" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="CAN 0x412 Signal Curve - Value" category="Transmission - CAN Signal Thresholds" storageaddress="0x0083DC" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>Indexed by the CAN ID 0x412 byte 0 signal (the same operand used by the Pressure Control X-formula).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve (8428) - °C" category="Transmission - Temperature Curves" storageaddress="0x00842A" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve (8428) - factor" category="Transmission - Temperature Curves" storageaddress="0x00842C" storagetype="uint16" endian="big" sizex="1" sizey="8" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="8">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

ATF TEMPERATURE PRESSURE FACTOR. The second multiplier in the line pressure chain. Runs about 1.70 when the fluid is very cold down to exactly 1.000 once warm, so the transmission raises line pressure while cold to compensate for fluid viscosity.

The /256 fixed point is confirmed from the code, not inferred from the shape: the lookup result is multiplied by a factor that defaults to 0x100 - which is 256, unity - and the product is shifted right by 16, which is exact only if both are /256.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 1 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008490" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 1 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008492" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 2 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0084EA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 2 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0084EC" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 3 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x00853C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 3 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x00853E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 4 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x008576" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 4 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x008578" storagetype="uint16" endian="big" sizex="1" sizey="12" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="12">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal FE Curve 5 of 5 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0085B2" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal FE Curve 5 of 5 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0085B4" storagetype="uint16" endian="big" sizex="1" sizey="52" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="52">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
    <data>17a</data>
    <data>17b</data>
    <data>18a</data>
    <data>18b</data>
    <data>19a</data>
    <data>19b</data>
    <data>20a</data>
    <data>20b</data>
    <data>21a</data>
    <data>21b</data>
    <data>22a</data>
    <data>22b</data>
    <data>23a</data>
    <data>23b</data>
    <data>24a</data>
    <data>24b</data>
    <data>25a</data>
    <data>25b</data>
    <data>26a</data>
    <data>26b</data>
   </table>
   <description>Indexed by internal signal FE. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 1 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00E308" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 1 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00E30A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 2 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00E342" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 2 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00E344" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Solenoid Output Curve 3 of 3 - Breakpoint" category="Transmission - Solenoid Curves" storageaddress="0x00E37C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Solenoid Output Curve 3 of 3 - Value" category="Transmission - Solenoid Curves" storageaddress="0x00E37E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>One of three parallel curves feeding adjacent solenoid output variables, sharing a common input.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 1 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x01093C" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 1 of 3 - 1/256" category="Transmission - Reference Speed" storageaddress="0x01093E" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 1 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01098E" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 1 of 2 - 1/256" category="Transmission - Signal Response Curves" storageaddress="0x010990" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="0.05" coarseincrement="1" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>1/256</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Signal 82CC Curve 2 of 2 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010B90" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Signal 82CC Curve 2 of 2 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010B92" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by internal signal 82CC. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Hysteresis Curve 0x00F610 - Breakpoint" category="Transmission - Uncategorised Curves" storageaddress="0x010D40" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Hysteresis Curve 0x00F610 - Value" category="Transmission - Uncategorised Curves" storageaddress="0x010D42" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Record-format curve located by call-site enumeration. Input not identified.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 2 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010F18" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 2 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010F1A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Reference Speed Curve 3 of 3 - km/h" category="Transmission - Reference Speed" storageaddress="0x010F80" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Reference Speed Curve 3 of 3 - Value" category="Transmission - Reference Speed" storageaddress="0x010F82" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the reference speed signal (a parallel copy of the central CAN-derived speed value).

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x010FE8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 1 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x010FEA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x011050" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 2 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x011052" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x0110B8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 3 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x0110BA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x011120" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 4 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x011122" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 1 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x0112E4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 1 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x0112E6" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 2 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x0118FC" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 2 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x0118FE" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 3 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011916" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 3 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011918" storagetype="uint16" endian="big" sizex="1" sizey="6" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="6">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 4 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011B98" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 4 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011B9A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 5 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x011D48" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 5 of 6 - Value" category="Transmission - Engine Speed Curves" storageaddress="0x011D4A" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="10">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01DBA6" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>
  <table type="3D" name="Engine Speed Curve 6 of 6 - RPM" category="Transmission - Engine Speed Curves" storageaddress="0x01DBA8" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="10" coarseincrement="100" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>RPM</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>Indexed by the smoothed CAN 0x410 engine-speed signal (the same input as the Speed Trim / Slip Detection families). One of six selected by operating mode.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.

RPM RANGE: engine speed is a uint16 scaled by 1/8, so the highest value these tables can hold is 8191 RPM. The stock calibration already uses breakpoints as high as 8160 RPM elsewhere, so there is room to raise shift and slip breakpoints for a built engine - but a target above 8191 RPM cannot be represented here, and entering one will clip.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01DBE8" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 5 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01DBEA" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 1) - °C" category="Transmission - Temperature Curves" storageaddress="0x01DC3A" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 1) - factor" category="Transmission - Temperature Curves" storageaddress="0x01DC3C" storagetype="uint16" endian="big" sizex="1" sizey="20" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="20">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected pair with Mode 2.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="ATF Temp Curve A (Mode 2) - °C" category="Transmission - Temperature Curves" storageaddress="0x01E190" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="°C" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>°C</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="ATF Temp Curve A (Mode 2) - factor" category="Transmission - Temperature Curves" storageaddress="0x01E192" storagetype="uint16" endian="big" sizex="1" sizey="32" skipCells="1" userlevel="1">
   <scaling units="x (multiplier)" expression="x/256" to_byte="x*256" format="0.000" fineincrement="0.004" coarseincrement="0.04" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>factor</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="32">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
    <data>14a</data>
    <data>14b</data>
    <data>15a</data>
    <data>15b</data>
    <data>16a</data>
    <data>16b</data>
   </table>
   <description>Indexed by ATF temperature from sensor 1. Mode-selected counterpart to Mode 1.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01E21C" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 6 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01E21E" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Breakpoint" category="Transmission - Signal Response Curves" storageaddress="0x01E596" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Breakpoint</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Smoothed Signal Curve 7 of 7 - Value" category="Transmission - Signal Response Curves" storageaddress="0x01E598" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="8" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Value</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>Indexed by the smoothed internal signal AE8. Physical meaning of the input is not confirmed.

Format: an array of 8-byte records, each one segment of a piecewise-linear curve. The array is terminated by a leading 0xFFFF.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x0174D2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x017298" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x017298" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x017298" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x017298" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x0179CA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x0177D8" storagetype="uint16" endian="big" sizex="8" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,29,-1,-1,-1,-1,-1,33,37,263,-1,-1,-1,-1,-1,-1,267,277,-1,-1,-1,-1,-1,-1,281,291,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x0177D8" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,4,8,12,16,20,-1,24,42,46,50,54,58,62,66,-1,70,29,-1,-1,-1,-1,-1,-1,33,37,75,-1,79,83,87,91,95,99,103,277,-1,-1,-1,-1,-1,-1,-1,281,291,-1,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x0177D8" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,-1,4,8,12,16,20,-1,24,42,46,50,54,58,62,66,-1,70,108,112,116,120,124,128,132,-1,136,29,-1,-1,-1,-1,-1,-1,33,37,75,-1,79,83,87,91,95,99,103,141,-1,145,149,153,157,161,165,169,291,-1,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x0177D8" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,-1,4,8,12,16,20,-1,24,42,46,50,54,58,62,66,-1,70,108,112,116,120,124,128,132,-1,136,174,178,182,186,190,194,198,-1,202,29,-1,-1,-1,-1,-1,-1,33,37,75,-1,79,83,87,91,95,99,103,141,-1,145,149,153,157,161,165,169,207,211,215,219,223,227,231,235,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x017232" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x017018" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,16,-1,20,25,29,33,37,41,45,49,283,-1,-1,-1,-1,-1,287,297,-1,-1,-1,-1,-1,301,311,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x017018" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,16,-1,20,54,-1,58,62,66,70,-1,-1,74,25,-1,-1,29,33,37,41,45,49,79,83,-1,87,91,95,99,-1,103,297,-1,-1,-1,-1,-1,-1,-1,301,311,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x017018" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,16,-1,20,54,-1,-1,58,62,66,70,-1,-1,74,108,-1,-1,112,116,120,124,128,132,136,25,-1,-1,-1,29,33,37,41,45,49,79,83,-1,-1,87,91,95,99,-1,103,141,145,149,153,157,161,165,169,173,177,311,-1,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x017018" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,-1,-1,-1,4,8,12,16,-1,20,54,-1,-1,58,62,66,70,-1,-1,74,108,-1,-1,112,116,120,124,128,132,136,182,186,190,194,198,202,206,210,214,218,25,-1,-1,-1,29,33,37,41,45,49,79,83,-1,-1,87,91,95,99,-1,103,141,145,149,153,157,161,165,169,173,177,223,227,231,235,239,243,247,251,255,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x016BAA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x01776A" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="37,41,0,4,14,18,28,32,46,50" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x016B28" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="0,4,9,13,23,27,37,41,51,55" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x0176E0" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,46,50,9,13,23,27,37,41,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016AA8" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,9,13,27,31,41,45,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x017658" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,50,54,9,13,27,31,41,45,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x016A20" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,9,13,27,31,45,49,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x0175C8" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x016990" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x017538" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x01692A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016720" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,275,-1,-1,-1,-1,-1,279,289,-1,-1,-1,-1,-1,293,303,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016720" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,-1,-1,74,21,-1,-1,25,29,33,37,41,45,79,83,-1,-1,87,91,95,99,103,289,-1,-1,-1,-1,-1,-1,-1,293,303,-1,-1,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016720" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,-1,-1,74,108,-1,112,116,120,124,128,132,-1,136,21,-1,-1,-1,25,29,33,37,41,45,79,83,-1,-1,-1,87,91,95,99,103,141,145,-1,149,153,157,161,165,169,173,303,-1,-1,-1,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016720" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,-1,-1,74,108,-1,-1,112,116,120,124,128,132,-1,136,178,-1,-1,182,186,190,194,198,202,-1,206,21,-1,-1,-1,-1,25,29,33,37,41,45,79,83,-1,-1,-1,-1,87,91,95,99,103,141,145,-1,-1,149,153,157,161,165,169,173,211,215,219,223,227,231,235,239,243,247,251" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x016FB2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x016C10" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,-1,41,45,479,-1,-1,-1,-1,-1,-1,-1,483,493,-1,-1,-1,-1,-1,-1,-1,497,507,-1,-1,-1,-1,-1,-1,-1,511" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x016C10" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,87,91,95,99,103,107,493,-1,-1,-1,-1,-1,-1,-1,497,507,-1,-1,-1,-1,-1,-1,-1,511" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x016E20" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,50,-1,54,58,62,66,70,74,-1,78,112,116,120,124,128,132,136,140,-1,144,33,-1,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,87,91,95,99,103,107,149,-1,-1,153,157,161,165,169,173,177,187,-1,-1,-1,-1,-1,-1,-1,-1,191" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x016C10" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,50,-1,-1,54,58,62,66,70,74,-1,78,112,-1,116,120,124,128,132,136,140,-1,144,182,-1,186,190,194,198,202,206,210,-1,214,33,-1,-1,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,-1,87,91,95,99,103,107,149,-1,-1,-1,153,157,161,165,169,173,177,219,223,227,231,235,239,243,247,251,255,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x0161AA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x015F90" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,-1,41,45,283,-1,-1,-1,-1,-1,-1,-1,287,297,-1,-1,-1,-1,-1,-1,-1,301,311,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x015F90" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,87,91,95,99,103,107,297,-1,-1,-1,-1,-1,-1,-1,301,311,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x015F90" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,50,-1,54,58,62,66,70,74,-1,78,112,116,120,124,128,132,136,140,-1,144,33,-1,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,87,91,95,99,103,107,149,-1,-1,153,157,161,165,169,173,177,311,-1,-1,-1,-1,-1,-1,-1,-1,315" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x015F90" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,50,-1,-1,54,58,62,66,70,74,-1,78,112,-1,116,120,124,128,132,136,140,-1,144,182,-1,186,190,194,198,202,206,210,-1,214,33,-1,-1,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,-1,87,91,95,99,103,107,149,-1,-1,-1,153,157,161,165,169,173,177,219,223,227,231,235,239,243,247,251,255,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x0166BA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x0164B0" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,275,-1,-1,-1,-1,-1,279,289,-1,-1,-1,-1,-1,293,303,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x0164B0" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,-1,-1,74,21,-1,-1,25,29,33,37,41,45,79,83,-1,-1,87,91,95,99,103,289,-1,-1,-1,-1,-1,-1,-1,293,303,-1,-1,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x0164B0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,-1,-1,74,108,-1,112,116,120,124,128,132,-1,136,21,-1,-1,-1,25,29,33,37,41,45,79,83,-1,-1,-1,87,91,95,99,103,141,145,-1,149,153,157,161,165,169,173,303,-1,-1,-1,-1,-1,-1,-1,-1,307" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x0164B0" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,-1,-1,74,108,-1,-1,112,116,120,124,128,132,-1,136,178,-1,-1,182,186,190,194,198,202,-1,206,21,-1,-1,-1,-1,25,29,33,37,41,45,79,83,-1,-1,-1,-1,87,91,95,99,103,141,145,-1,-1,149,153,157,161,165,169,173,211,215,219,223,227,231,235,239,243,247,251" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x01644A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x016210" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x016210" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x016210" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x016210" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F4A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F4C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F84" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F86" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012032" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012034" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FBE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FC0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01206C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01206E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120E0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120E2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FF8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FFA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120A6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120A8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01211A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01211C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012154" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012156" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x012190" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x012192" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121E0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121E2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x012242" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x012244" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122A4" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122A6" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01230E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x012310" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x012370" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x012372" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x0123D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x0123D4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012434" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012436" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124EC" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124EE" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x012546" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x012548" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01D78C" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78C as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E2" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E2 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E0" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E0 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01D7BC" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7BC as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01D7DE" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7DE as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01D784" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D784 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01D7DC" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7DC as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01D786" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D786 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01D79E" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D79E as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A0" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A0 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A2" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A2 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A4" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A4 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01D7FA" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7FA as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01D7DA" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7DA as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01D792" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D792 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01D79C" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D79C as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01D79A" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D79A as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01D81E" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D81E as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01D794" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D794 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01D81C" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D81C as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01D796" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D796 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01D81A" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D81A as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D8" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D8 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01D818" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D818 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D6" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D6 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01D816" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D816 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01D7F8" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7F8 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D4" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D4 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01D840" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D840 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01D83E" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D83E as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01D83C" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D83C as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01D83A" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D83A as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01D838" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D838 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01D836" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D836 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01D834" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D834 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01D842" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D842 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01D798" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D798 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A6" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A6 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01D804" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D804 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01D808" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D808 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01D806" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D806 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01D7EC" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7EC as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01D7EA" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7EA as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E8" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E8 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E6" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E6 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01D7FE" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7FE as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01D7FC" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7FC as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E4" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E4 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01D82C" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D82C as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01D82A" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D82A as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01D828" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D828 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01D826" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D826 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01D824" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D824 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_ABD1207000</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB5300</internalidstring>
   <caseid>Q5L</caseid>
   <ecuid>ABD1207000</ecuid>
   <version>ABD1207000</version>
   <year>2006</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>ABD1207000 (06 JDM Legacy GT)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: ABD1207000  (cal ID MB5300, JDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01D255" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01D255" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B2" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01049A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104CC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010516" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x0104FE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010548" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010530" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01057A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010562" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011552" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x01153E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01157C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011568" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115A6" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011592" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115D0" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x0115BC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115FA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115E6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01167A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011666" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116A4" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011690" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116CE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x0116BA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116F8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116E4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011722" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x01170E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DB6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DAC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E04" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E38" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E2E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E44" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E64" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E5A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E7A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E70" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E90" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E86" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01136C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011362" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011382" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011378" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011398" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113AE" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113A4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113C4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113BA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108EA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108D6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010914" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010900" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118D8" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x0118CC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011766" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011750" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011794" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01177E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117C2" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x0117AC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117F0" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01181E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x011808" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01194E" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x01192E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011990" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011970" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01186A" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011854" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x0179B2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x017778" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x017778" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x017778" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x017778" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x017EBA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017CB8" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,-1,-1,41,45,271,-1,-1,-1,-1,-1,-1,-1,275,285,-1,-1,-1,-1,-1,-1,-1,289,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017CB8" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,285,-1,-1,-1,-1,-1,-1,-1,289,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017CB8" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,116,120,124,128,132,136,140,-1,144,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,149,-1,153,157,161,165,169,173,177,299,-1,-1,-1,-1,-1,-1,-1,303" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017CB8" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,116,120,124,128,132,136,140,-1,144,182,186,190,194,198,202,206,-1,210,33,-1,-1,-1,37,-1,-1,41,45,83,-1,87,91,95,99,103,107,111,149,-1,153,157,161,165,169,173,177,215,219,223,227,231,235,239,243,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x017712" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x0174F0" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,16,-1,20,25,29,33,37,41,45,49,287,-1,-1,-1,-1,-1,291,301,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x0174F0" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,16,-1,20,54,-1,58,62,66,70,74,-1,78,25,-1,-1,29,33,37,41,45,49,83,87,-1,91,95,99,103,-1,107,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x0174F0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,16,-1,20,54,-1,-1,58,62,66,70,74,-1,78,112,-1,-1,116,120,124,128,132,136,140,25,-1,-1,-1,29,33,37,41,45,49,83,87,-1,-1,91,95,99,103,-1,107,145,149,153,157,161,165,169,173,177,181,315,-1,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x0174F0" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,-1,-1,-1,4,8,12,16,-1,20,54,-1,-1,58,62,66,70,74,-1,78,112,-1,-1,116,120,124,128,132,136,140,186,190,194,198,202,206,210,214,218,222,25,-1,-1,-1,29,33,37,41,45,49,83,87,-1,-1,91,95,99,103,-1,107,145,149,153,157,161,165,169,173,177,181,227,231,235,239,243,247,251,255,259,263" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x017072" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x017C4A" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="37,41,0,4,14,18,28,32,46,50" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x016FF0" storagetype="uint16" endian="big" sizex="2" sizey="5" cellIndices="0,4,9,13,23,27,37,41,51,55" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017BC0" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,46,50,9,13,23,27,37,41,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016F70" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,9,13,27,31,41,45,55,59" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x017B38" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,50,54,9,13,27,31,41,45,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x016EE8" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,9,13,27,31,45,49,59,63" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017AA8" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x016E58" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x017A18" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x016DF2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016BE0" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,279,-1,-1,-1,-1,-1,283,293,-1,-1,-1,-1,-1,297,307,-1,-1,-1,-1,-1,311" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016BE0" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,74,-1,78,21,-1,-1,25,29,33,37,41,45,83,87,-1,-1,91,95,99,103,107,293,-1,-1,-1,-1,-1,-1,-1,297,307,-1,-1,-1,-1,-1,-1,-1,311" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016BE0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,74,-1,78,112,-1,116,120,124,128,132,136,-1,140,21,-1,-1,-1,25,29,33,37,41,45,83,87,-1,-1,-1,91,95,99,103,107,145,149,-1,153,157,161,165,169,173,177,307,-1,-1,-1,-1,-1,-1,-1,-1,311" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016BE0" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,74,-1,78,112,-1,-1,116,120,124,128,132,136,-1,140,182,-1,-1,186,190,194,198,202,206,-1,210,21,-1,-1,-1,-1,25,29,33,37,41,45,83,87,-1,-1,-1,-1,91,95,99,103,107,145,149,-1,-1,153,157,161,165,169,173,177,215,219,223,227,231,235,239,243,247,251,255" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x01748A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x0170D8" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,41,-1,45,49,487,-1,-1,-1,-1,-1,-1,-1,491,501,-1,-1,-1,-1,-1,-1,-1,505,515,-1,-1,-1,-1,-1,-1,-1,519" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x0170D8" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,54,58,62,66,70,74,78,-1,82,33,-1,-1,-1,37,41,-1,45,49,87,-1,-1,91,95,99,103,107,111,501,-1,-1,-1,-1,-1,-1,-1,505,515,-1,-1,-1,-1,-1,-1,-1,519" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x0172F0" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,54,-1,58,62,66,70,74,78,-1,82,116,120,124,128,132,136,140,144,-1,148,33,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,157,161,165,169,173,177,181,191,-1,-1,-1,-1,-1,-1,-1,-1,195" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x0170D8" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,54,-1,-1,58,62,66,70,74,78,-1,82,116,-1,120,124,128,132,136,140,144,-1,148,186,-1,190,194,198,202,206,210,214,-1,218,33,-1,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,-1,157,161,165,169,173,177,181,223,227,231,235,239,243,247,251,255,259,263" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x016662" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x016440" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,37,41,-1,45,49,287,-1,-1,-1,-1,-1,-1,-1,291,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x016440" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,54,58,62,66,70,74,78,-1,82,33,-1,-1,-1,37,41,-1,45,49,87,-1,-1,91,95,99,103,107,111,301,-1,-1,-1,-1,-1,-1,-1,305,315,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x016440" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,4,8,12,16,20,24,-1,28,54,-1,58,62,66,70,74,78,-1,82,116,120,124,128,132,136,140,144,-1,148,33,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,157,161,165,169,173,177,181,315,-1,-1,-1,-1,-1,-1,-1,-1,319" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x016440" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,54,-1,-1,58,62,66,70,74,78,-1,82,116,-1,120,124,128,132,136,140,144,-1,148,186,-1,190,194,198,202,206,210,214,-1,218,33,-1,-1,-1,-1,-1,37,41,-1,45,49,87,-1,-1,-1,-1,91,95,99,103,107,111,153,-1,-1,-1,157,161,165,169,173,177,181,223,227,231,235,239,243,247,251,255,259,263" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x016B7A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x016968" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,279,-1,-1,-1,-1,-1,283,293,-1,-1,-1,-1,-1,297,307,-1,-1,-1,-1,-1,311" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x016968" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,74,-1,78,21,-1,-1,25,29,33,37,41,45,83,87,-1,-1,91,95,99,103,107,293,-1,-1,-1,-1,-1,-1,-1,297,307,-1,-1,-1,-1,-1,-1,-1,311" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x016968" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,74,-1,78,112,-1,116,120,124,128,132,136,-1,140,21,-1,-1,-1,25,29,33,37,41,45,83,87,-1,-1,-1,91,95,99,103,107,145,149,-1,153,157,161,165,169,173,177,307,-1,-1,-1,-1,-1,-1,-1,-1,311" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x016968" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,74,-1,78,112,-1,-1,116,120,124,128,132,136,-1,140,182,-1,-1,186,190,194,198,202,206,-1,210,21,-1,-1,-1,-1,25,29,33,37,41,45,83,87,-1,-1,-1,-1,91,95,99,103,107,145,149,-1,-1,153,157,161,165,169,173,177,215,219,223,227,231,235,239,243,247,251,255" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x016902" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x0166C8" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x0166C8" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x0166C8" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x0166C8" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0123F6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0123F8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012430" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012432" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124DE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124E0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01246A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01246C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012518" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01251A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01258C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01258E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124A4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124A6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012552" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012554" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0125C6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0125C8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012600" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012602" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x01263C" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x01263E" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x01268C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x01268E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0126EE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0126F0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012750" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012752" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x0127BA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x0127BC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x01281C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x01281E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x01287E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012880" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x0128E0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x0128E2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x012998" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01299A" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0129F2" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0129F4" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01DCC4" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCC4 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01DD1A" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD1A as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01DD18" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD18 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01DCF4" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCF4 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01DD16" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD16 as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01DCBC" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCBC as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01DD14" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD14 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01DCBE" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCBE as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD6" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD6 as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD8" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD8 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01DCDA" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCDA as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01DCDC" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCDC as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01DD32" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD32 as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01DD12" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD12 as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCA" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCA as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD4" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD4 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD2" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD2 as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01DD56" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD56 as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCC" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCC as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01DD54" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD54 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCE" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCE as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01DD52" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD52 as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01DD10" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD10 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01DD50" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD50 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01DD0E" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD0E as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01DD4E" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD4E as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01DD30" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD30 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01DD0C" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD0C as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01DD78" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD78 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01DD76" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD76 as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01DD74" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD74 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01DD72" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD72 as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01DD70" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD70 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01DD6E" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD6E as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01DD6C" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD6C as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01DD7A" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD7A as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD0" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD0 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01DCDE" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCDE as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01DD3C" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD3C as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01DD40" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD40 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01DD3E" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD3E as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01DD24" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD24 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01DD22" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD22 as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01DD20" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD20 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01DD1E" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD1E as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01DD36" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD36 as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01DD34" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD34 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01DD1C" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD1C as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01DD64" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD64 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01DD62" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD62 as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01DD60" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD60 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01DD5E" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD5E as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01DD5C" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DD5C as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_ACD1207000</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB558D01</internalidstring>
   <caseid>Q7W</caseid>
   <ecuid>ACD1207000</ecuid>
   <version>ACD1207000</version>
   <year>2006</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>ACD1207000 (LGT06 JDM)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>512kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: ACD1207000  (cal ID MB558D01, JDM, 512kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01D401" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01D401" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B2" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01049A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104CC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010516" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x0104FE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010548" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010530" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01057A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010562" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011522" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x01150E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01154C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011538" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011576" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011562" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115A0" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x01158C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115CA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115B6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01164A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011636" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011674" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011660" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01169E" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x01168A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116C8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116B4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116F2" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x0116DE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DB6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DAC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E04" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E38" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E2E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E44" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E64" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E5A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E7A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E70" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E90" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E86" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01133C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011332" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011352" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011348" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011368" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01135E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01137E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011374" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011394" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108EA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108D6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010914" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010900" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118A8" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x01189C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011736" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011720" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011764" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01174E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011792" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x01177C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117C0" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117AA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117EE" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x0117D8" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01191E" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x0118FE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011960" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011940" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01183A" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011824" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x017BC6" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x01798C" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x01798C" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x01798C" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x01798C" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x01800E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017EFC" storagetype="uint16" endian="big" sizex="5" sizey="5" cellIndices="0,4,8,-1,12,17,-1,-1,21,25,151,-1,-1,-1,155,165,-1,-1,-1,169,179,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="5">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017EFC" storagetype="uint16" endian="big" sizex="7" sizey="6" cellIndices="0,-1,4,8,-1,-1,12,30,34,38,42,-1,-1,46,17,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,165,-1,-1,-1,-1,-1,169,179,-1,-1,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017EFC" storagetype="uint16" endian="big" sizex="7" sizey="7" cellIndices="0,-1,4,8,-1,-1,12,30,34,38,42,-1,-1,46,64,68,72,76,-1,-1,80,17,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,85,-1,-1,-1,89,-1,93,179,-1,-1,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017EFC" storagetype="uint16" endian="big" sizex="7" sizey="8" cellIndices="0,-1,4,8,-1,-1,12,30,34,38,42,-1,-1,46,64,68,72,76,-1,-1,80,98,102,106,110,-1,-1,114,17,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,85,-1,-1,-1,89,-1,93,119,-1,-1,123,-1,-1,127" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x017926" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x017734" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,263,-1,-1,-1,-1,-1,267,277,-1,-1,-1,-1,-1,281,291,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x017734" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,-1,54,58,62,66,-1,-1,70,21,-1,-1,25,29,33,37,41,45,75,79,-1,83,87,91,95,-1,99,277,-1,-1,-1,-1,-1,-1,-1,281,291,-1,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x017734" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,-1,-1,54,58,62,66,-1,-1,70,104,-1,-1,108,112,116,120,-1,-1,124,21,-1,-1,-1,25,29,33,37,41,45,75,79,-1,-1,83,87,91,95,-1,99,129,133,137,141,145,149,153,157,161,165,291,-1,-1,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x017734" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,-1,-1,54,58,62,66,-1,-1,70,104,-1,-1,108,112,116,120,-1,-1,124,170,174,178,182,186,190,194,-1,-1,198,21,-1,-1,-1,25,29,33,37,41,45,75,79,-1,-1,83,87,91,95,-1,99,129,133,137,141,145,149,153,157,161,165,203,207,211,215,219,223,227,231,235,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x01732E" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="9,13,27,31,45,49,0,4,18,22,36,40,54,58" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x017E7E" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="9,13,27,31,45,49,0,4,18,22,36,40,54,58" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x01728C" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,36,40,54,58,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017DDC" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,36,40,54,58,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x0171FC" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,54,58,9,13,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x017D4C" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,54,58,9,13,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x01716C" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,36,40,9,13,27,31,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017CBC" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,36,40,9,13,27,31,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x0170DC" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x017C2C" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x017076" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,247,-1,-1,-1,-1,-1,251,261,-1,-1,-1,-1,-1,265,275,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,74,-1,78,21,-1,-1,25,29,33,37,41,45,83,-1,-1,87,-1,-1,-1,91,95,261,-1,-1,-1,-1,-1,-1,-1,265,275,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,74,-1,78,100,-1,104,108,112,116,120,124,-1,128,21,-1,-1,-1,25,29,33,37,41,45,83,-1,-1,-1,87,-1,-1,-1,91,95,133,-1,-1,137,-1,-1,-1,-1,141,145,275,-1,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,74,-1,78,100,-1,-1,104,108,112,116,120,124,-1,128,150,-1,-1,154,158,162,166,170,174,-1,178,21,-1,-1,-1,-1,25,29,33,37,41,45,83,-1,-1,-1,-1,87,-1,-1,-1,91,95,133,-1,-1,-1,137,-1,-1,-1,-1,141,145,183,187,191,195,199,203,207,211,215,219,223" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x0176CE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x0173AC" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,-1,41,45,415,-1,-1,-1,-1,-1,-1,-1,419,429,-1,-1,-1,-1,-1,-1,-1,433,443,-1,-1,-1,-1,-1,-1,-1,447" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x0173AC" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,-1,87,91,95,99,429,-1,-1,-1,-1,-1,-1,-1,433,443,-1,-1,-1,-1,-1,-1,-1,447" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x017564" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,-1,4,8,12,16,20,-1,24,-1,28,50,-1,54,58,62,66,70,-1,74,-1,78,104,108,112,116,120,124,128,-1,132,-1,136,33,-1,-1,-1,-1,-1,37,-1,-1,41,45,83,-1,-1,-1,-1,-1,87,-1,91,95,99,141,-1,-1,-1,-1,145,-1,149,-1,153,157,167,-1,-1,-1,-1,-1,-1,-1,-1,-1,171" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x0173AC" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,4,8,12,16,20,-1,24,-1,28,50,-1,54,58,62,66,70,-1,74,-1,78,104,108,112,116,120,124,128,-1,132,-1,136,162,166,170,174,178,182,186,-1,190,-1,194,33,-1,-1,-1,-1,-1,37,-1,-1,41,45,83,-1,-1,-1,-1,-1,87,-1,91,95,99,141,-1,-1,-1,-1,145,-1,149,-1,153,157,199,-1,-1,-1,203,-1,207,-1,-1,211,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x0169FE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x01683C" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,-1,41,45,239,-1,-1,-1,-1,-1,-1,-1,243,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x01683C" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,-1,87,91,95,99,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x01683C" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,-1,4,8,12,16,20,-1,24,-1,28,50,-1,54,58,62,66,70,-1,74,-1,78,104,108,112,116,120,124,128,-1,132,-1,136,33,-1,-1,-1,-1,-1,37,-1,-1,41,45,83,-1,-1,-1,-1,-1,87,-1,91,95,99,141,-1,-1,-1,-1,145,-1,149,-1,153,157,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x01683C" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,4,8,12,16,20,-1,24,-1,28,50,-1,54,58,62,66,70,-1,74,-1,78,104,108,112,116,120,124,128,-1,132,-1,136,162,166,170,174,178,182,186,-1,190,-1,194,33,-1,-1,-1,-1,-1,37,-1,-1,41,45,83,-1,-1,-1,-1,-1,87,-1,91,95,99,141,-1,-1,-1,-1,145,-1,149,-1,153,157,199,-1,-1,-1,203,-1,207,-1,-1,211,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x016E3E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x016C6C" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,247,-1,-1,-1,-1,-1,251,261,-1,-1,-1,-1,-1,265,275,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x016C6C" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,74,-1,78,21,-1,-1,25,29,33,37,41,45,83,-1,-1,87,-1,-1,-1,91,95,261,-1,-1,-1,-1,-1,-1,-1,265,275,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x016C6C" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,74,-1,78,100,-1,104,108,112,116,120,124,-1,128,21,-1,-1,-1,25,29,33,37,41,45,83,-1,-1,-1,87,-1,-1,-1,91,95,133,-1,-1,137,-1,-1,-1,-1,141,145,275,-1,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x016C6C" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,74,-1,78,100,-1,-1,104,108,112,116,120,124,-1,128,150,-1,-1,154,158,162,166,170,174,-1,178,21,-1,-1,-1,-1,25,29,33,37,41,45,83,-1,-1,-1,-1,87,-1,-1,-1,91,95,133,-1,-1,-1,137,-1,-1,-1,-1,141,145,183,187,191,195,199,203,207,211,215,219,223" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x016C06" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x016A64" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,-1,-1,37,41,223,-1,-1,-1,-1,-1,-1,-1,227,237,-1,-1,-1,-1,-1,-1,-1,241,251,-1,-1,-1,-1,-1,-1,-1,255" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x016A64" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,46,50,54,58,62,66,70,-1,74,33,-1,-1,-1,-1,-1,-1,37,41,79,-1,-1,-1,-1,83,-1,87,91,237,-1,-1,-1,-1,-1,-1,-1,241,251,-1,-1,-1,-1,-1,-1,-1,255" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x016A64" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,20,24,-1,28,46,50,54,58,62,66,70,-1,74,96,100,104,108,112,116,120,-1,124,33,-1,-1,-1,-1,-1,-1,37,41,79,-1,-1,-1,-1,83,-1,87,91,129,-1,-1,-1,133,-1,-1,137,141,251,-1,-1,-1,-1,-1,-1,-1,255" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x016A64" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,46,-1,-1,50,54,58,62,66,70,-1,74,96,-1,-1,100,104,108,112,116,120,-1,124,146,150,154,158,162,166,170,174,178,-1,182,33,-1,-1,-1,-1,-1,-1,-1,-1,37,41,79,-1,-1,-1,-1,-1,-1,83,-1,87,91,129,-1,-1,-1,-1,-1,133,-1,-1,137,141,187,-1,-1,-1,-1,191,-1,-1,-1,195,199" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0123C6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0123C8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012400" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012402" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124AE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124B0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01243A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01243C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124E8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124EA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01255C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01255E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012474" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012476" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012522" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012524" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012596" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012598" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0125D0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0125D2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x01260C" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x01260E" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x01265C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x01265E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0126BE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0126C0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012720" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012722" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01278A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x01278C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0127EC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0127EE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x01284E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012850" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x0128B0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x0128B2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x012968" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01296A" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0129C2" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0129C4" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01DE68" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE68 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01DEBE" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEBE as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01DEBC" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEBC as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01DE98" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE98 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01DEBA" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEBA as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01DE60" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE60 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01DEB8" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEB8 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01DE62" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE62 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01DE7A" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE7A as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01DE7C" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE7C as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01DE7E" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE7E as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01DE80" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE80 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01DED6" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DED6 as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01DEB6" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEB6 as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01DE6E" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE6E as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01DE78" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE78 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01DE76" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE76 as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01DEFA" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEFA as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01DE70" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE70 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01DEF8" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEF8 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01DE72" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE72 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01DEF6" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEF6 as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01DEB4" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEB4 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01DEF4" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEF4 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01DEB2" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEB2 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01DEF2" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEF2 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01DED4" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DED4 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01DEB0" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEB0 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01DF1C" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF1C as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01DF1A" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF1A as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01DF18" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF18 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01DF16" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF16 as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01DF14" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF14 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01DF12" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF12 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01DF10" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF10 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01DF1E" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF1E as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01DE74" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE74 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01DE82" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE82 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01DEE0" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEE0 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01DEE4" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEE4 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01DEE2" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEE2 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC8" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC8 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC6" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC6 as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC4" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC4 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC2" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC2 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01DEDA" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEDA as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01DED8" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DED8 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC0" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC0 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01DF08" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF08 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01DF06" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF06 as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01DF04" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF04 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01DF02" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF02 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01DF00" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF00 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_ADE0236000</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB562EH</internalidstring>
   <caseid>Q8C</caseid>
   <ecuid>ADE0236000</ecuid>
   <version>ADE0236000</version>
   <year>Unknown</year>
   <market>Unknown</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>ADE0236000</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>512kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: ADE0236000  (cal ID MB562EH, Unknown, 512kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01D1B5" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01D1B5" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010674" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01065C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0106A6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x01068E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0106D8" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x0106C0" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01070A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x0106F2" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01073C" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010724" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0116E2" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x0116CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01170C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x0116F8" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011736" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011722" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011760" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x01174C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01178A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x011776" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01180A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x0117F6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011834" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011820" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01185E" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x01184A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011888" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x011874" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0118B2" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x01189E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010F76" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010F6C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010F8C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010F82" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010FA2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010F98" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010FB8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010FAE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010FCE" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010FC4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010FF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010FEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x01100E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011004" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x011024" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01101A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x01103A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011030" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x011050" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011046" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0114FC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0114F2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011512" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011508" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011528" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01151E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01153E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011534" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011554" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01154A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010AAA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010A96" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010AD4" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010AC0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x011A68" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x011A5C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0118F6" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x0118E0" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011924" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01190E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011952" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x01193C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011980" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x01196A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0119AE" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x011998" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011ADE" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x011ABE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011B20" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011B00" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0119FA" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x0119E4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x017BA2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x017A68" storagetype="uint16" endian="big" sizex="5" sizey="5" cellIndices="0,4,8,-1,12,17,-1,-1,21,25,171,-1,-1,-1,175,185,-1,-1,-1,189,199,-1,-1,-1,203" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="5">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x017A68" storagetype="uint16" endian="big" sizex="7" sizey="6" cellIndices="0,4,8,-1,-1,-1,12,30,34,38,-1,42,-1,46,17,-1,-1,-1,-1,21,25,51,-1,-1,55,-1,59,63,185,-1,-1,-1,-1,-1,189,199,-1,-1,-1,-1,-1,203" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x017A68" storagetype="uint16" endian="big" sizex="8" sizey="7" cellIndices="0,4,8,-1,-1,-1,-1,12,30,34,38,-1,-1,42,-1,46,68,72,76,-1,-1,80,-1,84,17,-1,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,63,89,-1,-1,93,97,-1,101,105,199,-1,-1,-1,-1,-1,-1,203" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x017A68" storagetype="uint16" endian="big" sizex="8" sizey="8" cellIndices="0,4,8,-1,-1,-1,-1,12,30,34,38,-1,-1,42,-1,46,68,72,76,-1,-1,80,-1,84,110,114,118,-1,-1,122,-1,126,17,-1,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,63,89,-1,-1,93,97,-1,101,105,131,-1,-1,135,139,-1,143,147" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x017FEA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017ED8" storagetype="uint16" endian="big" sizex="5" sizey="5" cellIndices="0,4,8,-1,12,17,-1,-1,21,25,151,-1,-1,-1,155,165,-1,-1,-1,169,179,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="5">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017ED8" storagetype="uint16" endian="big" sizex="6" sizey="6" cellIndices="0,4,8,-1,-1,12,30,34,38,-1,-1,42,17,-1,-1,-1,21,25,47,-1,-1,51,-1,55,165,-1,-1,-1,-1,169,179,-1,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="6">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017ED8" storagetype="uint16" endian="big" sizex="6" sizey="7" cellIndices="0,4,8,-1,-1,12,30,34,38,-1,-1,42,60,64,68,-1,-1,72,17,-1,-1,-1,21,25,47,-1,-1,51,-1,55,77,-1,-1,81,85,89,179,-1,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="6">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017ED8" storagetype="uint16" endian="big" sizex="8" sizey="8" cellIndices="0,4,-1,8,-1,-1,-1,12,30,34,-1,38,-1,-1,-1,42,60,64,-1,68,-1,-1,-1,72,94,98,102,106,-1,-1,-1,110,17,-1,-1,-1,-1,-1,21,25,47,-1,-1,-1,-1,51,-1,55,77,-1,-1,-1,-1,81,85,89,115,-1,-1,-1,119,-1,123,127" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x017A02" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x017750" storagetype="uint16" endian="big" sizex="13" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,-1,-1,-1,32,37,-1,-1,-1,-1,-1,-1,41,45,49,53,57,61,359,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,363,373,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,377,387,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,391" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="13">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x017750" storagetype="uint16" endian="big" sizex="15" sizey="6" cellIndices="0,4,8,12,16,-1,20,24,28,-1,-1,-1,-1,-1,32,66,70,74,78,82,-1,86,90,94,-1,98,-1,-1,-1,102,37,-1,-1,-1,-1,-1,-1,-1,41,45,49,53,57,-1,61,107,-1,-1,111,115,119,123,127,131,135,139,143,147,151,155,373,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,377,387,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,391" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x017750" storagetype="uint16" endian="big" sizex="15" sizey="7" cellIndices="0,4,8,12,16,-1,20,24,28,-1,-1,-1,-1,-1,32,66,70,74,78,82,-1,86,90,94,-1,98,-1,-1,-1,102,160,164,168,172,176,-1,180,184,188,-1,192,-1,-1,-1,196,37,-1,-1,-1,-1,-1,-1,-1,41,45,49,53,57,-1,61,107,-1,-1,111,115,119,123,127,131,135,139,143,147,151,155,201,-1,-1,-1,205,209,213,217,221,225,229,233,237,241,245,387,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,391" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x017750" storagetype="uint16" endian="big" sizex="15" sizey="8" cellIndices="0,4,8,12,16,-1,20,24,28,-1,-1,-1,-1,-1,32,66,70,74,78,82,-1,86,90,94,-1,98,-1,-1,-1,102,160,164,168,172,176,-1,180,184,188,-1,192,-1,-1,-1,196,250,254,258,262,266,-1,270,274,278,-1,282,-1,-1,-1,286,37,-1,-1,-1,-1,-1,-1,-1,41,45,49,53,57,-1,61,107,-1,-1,111,115,119,123,127,131,135,139,143,147,151,155,201,-1,-1,-1,205,209,213,217,221,225,229,233,237,241,245,291,-1,-1,295,299,303,307,311,315,319,323,327,331,-1,335" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>22.0</data>
    <data>25.1</data>
    <data>28.2</data>
    <data>31.4</data>
    <data>34.5</data>
    <data>37.6</data>
    <data>40.8</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x01743A" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="9,13,27,31,45,49,0,4,18,22,36,40,54,58" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x017E5A" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="9,13,27,31,45,49,0,4,18,22,36,40,54,58" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x017398" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,36,40,54,58,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017DB8" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,36,40,54,58,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x017308" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,54,58,9,13,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x017D28" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,54,58,9,13,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x017278" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,36,40,9,13,27,31,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017C98" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,36,40,9,13,27,31,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x0171E8" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x017C08" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x017182" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x017000" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,-1,-1,-1,12,17,-1,-1,21,25,29,33,207,-1,-1,-1,-1,-1,211,221,-1,-1,-1,-1,-1,225,235,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x017000" storagetype="uint16" endian="big" sizex="8" sizey="6" cellIndices="0,4,8,-1,-1,-1,-1,12,38,42,46,50,-1,54,-1,58,17,-1,-1,-1,21,25,29,33,63,-1,67,71,-1,-1,75,79,221,-1,-1,-1,-1,-1,-1,225,235,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x017000" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,-1,-1,-1,-1,-1,12,38,42,46,50,-1,-1,54,-1,58,84,88,92,96,-1,-1,100,-1,104,17,-1,-1,-1,21,-1,25,29,33,63,-1,67,71,-1,-1,-1,75,79,109,-1,113,117,-1,121,-1,125,129,235,-1,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x017000" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,4,-1,8,-1,-1,-1,-1,-1,12,38,42,-1,46,50,-1,-1,54,-1,58,84,88,-1,92,96,-1,-1,100,-1,104,134,138,-1,142,146,-1,-1,150,-1,154,17,-1,-1,-1,-1,21,-1,25,29,33,63,-1,-1,67,71,-1,-1,-1,75,79,109,-1,-1,113,117,-1,121,-1,125,129,159,-1,163,167,171,175,-1,-1,179,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>18.8</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x0176EA" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x0174B8" storagetype="uint16" endian="big" sizex="5" sizey="5" cellIndices="0,4,8,-1,12,17,-1,-1,21,25,295,-1,-1,-1,299,309,-1,-1,-1,313,323,-1,-1,-1,327" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="5">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x0174B8" storagetype="uint16" endian="big" sizex="7" sizey="6" cellIndices="0,4,8,-1,-1,-1,12,30,34,38,-1,42,-1,46,17,-1,-1,-1,-1,21,25,51,-1,-1,55,-1,59,63,309,-1,-1,-1,-1,-1,313,323,-1,-1,-1,-1,-1,327" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x0175E8" storagetype="uint16" endian="big" sizex="8" sizey="7" cellIndices="0,4,8,-1,-1,-1,-1,12,30,34,38,-1,-1,42,-1,46,68,72,76,-1,-1,80,-1,84,17,-1,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,63,89,-1,-1,93,97,-1,101,105,115,-1,-1,-1,-1,-1,-1,119" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x0174B8" storagetype="uint16" endian="big" sizex="8" sizey="8" cellIndices="0,4,8,-1,-1,-1,-1,12,30,34,38,-1,-1,42,-1,46,68,72,76,-1,-1,80,-1,84,110,114,118,-1,-1,122,-1,126,17,-1,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,63,89,-1,-1,93,97,-1,101,105,131,-1,-1,135,139,-1,143,147" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x016BF2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x016AB8" storagetype="uint16" endian="big" sizex="5" sizey="5" cellIndices="0,4,8,-1,12,17,-1,-1,21,25,171,-1,-1,-1,175,185,-1,-1,-1,189,199,-1,-1,-1,203" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="5">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x016AB8" storagetype="uint16" endian="big" sizex="7" sizey="6" cellIndices="0,4,8,-1,-1,-1,12,30,34,38,-1,42,-1,46,17,-1,-1,-1,-1,21,25,51,-1,-1,55,-1,59,63,185,-1,-1,-1,-1,-1,189,199,-1,-1,-1,-1,-1,203" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x016AB8" storagetype="uint16" endian="big" sizex="8" sizey="7" cellIndices="0,4,8,-1,-1,-1,-1,12,30,34,38,-1,-1,42,-1,46,68,72,76,-1,-1,80,-1,84,17,-1,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,63,89,-1,-1,93,97,-1,101,105,199,-1,-1,-1,-1,-1,-1,203" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x016AB8" storagetype="uint16" endian="big" sizex="8" sizey="8" cellIndices="0,4,8,-1,-1,-1,-1,12,30,34,38,-1,-1,42,-1,46,68,72,76,-1,-1,80,-1,84,110,114,118,-1,-1,122,-1,126,17,-1,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,63,89,-1,-1,93,97,-1,101,105,131,-1,-1,135,139,-1,143,147" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>31.4</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x016F9A" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x016E18" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,-1,-1,-1,12,17,-1,-1,21,25,29,33,207,-1,-1,-1,-1,-1,211,221,-1,-1,-1,-1,-1,225,235,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x016E18" storagetype="uint16" endian="big" sizex="8" sizey="6" cellIndices="0,4,8,-1,-1,-1,-1,12,38,42,46,50,-1,54,-1,58,17,-1,-1,-1,21,25,29,33,63,-1,67,71,-1,-1,75,79,221,-1,-1,-1,-1,-1,-1,225,235,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="8">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x016E18" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,-1,-1,-1,-1,-1,12,38,42,46,50,-1,-1,54,-1,58,84,88,92,96,-1,-1,100,-1,104,17,-1,-1,-1,21,-1,25,29,33,63,-1,67,71,-1,-1,-1,75,79,109,-1,113,117,-1,121,-1,125,129,235,-1,-1,-1,-1,-1,-1,-1,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x016E18" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,4,-1,8,-1,-1,-1,-1,-1,12,38,42,-1,46,50,-1,-1,54,-1,58,84,88,-1,92,96,-1,-1,100,-1,104,134,138,-1,142,146,-1,-1,150,-1,154,17,-1,-1,-1,-1,21,-1,25,29,33,63,-1,-1,67,71,-1,-1,-1,75,79,109,-1,-1,113,117,-1,121,-1,125,129,159,-1,163,167,171,175,-1,-1,179,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>18.8</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x016DB2" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x016C58" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,-1,-1,-1,20,25,-1,-1,-1,-1,29,33,37,41,187,-1,-1,-1,-1,-1,-1,-1,191,201,-1,-1,-1,-1,-1,-1,-1,205,215,-1,-1,-1,-1,-1,-1,-1,219" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>6.3</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x016C58" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,-1,-1,-1,20,46,50,54,58,62,-1,-1,-1,66,25,-1,-1,-1,-1,29,33,37,41,71,-1,-1,-1,75,-1,-1,79,83,201,-1,-1,-1,-1,-1,-1,-1,205,215,-1,-1,-1,-1,-1,-1,-1,219" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>6.3</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x016C58" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,-1,-1,-1,20,46,50,54,58,62,-1,-1,-1,66,88,92,96,100,104,-1,-1,-1,108,25,-1,-1,-1,-1,29,33,37,41,71,-1,-1,-1,75,-1,-1,79,83,113,-1,-1,-1,117,-1,-1,121,125,215,-1,-1,-1,-1,-1,-1,-1,219" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>6.3</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x016C58" storagetype="uint16" endian="big" sizex="9" sizey="8" cellIndices="0,4,8,12,16,-1,-1,-1,20,46,50,54,58,62,-1,-1,-1,66,88,92,96,100,104,-1,-1,-1,108,130,134,138,142,146,-1,-1,-1,150,25,-1,-1,-1,-1,29,33,37,41,71,-1,-1,-1,75,-1,-1,79,83,113,-1,-1,-1,117,-1,-1,121,125,155,-1,-1,-1,159,-1,-1,-1,163" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>6.3</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01255E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012560" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012598" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01259A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012646" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012648" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0125D2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0125D4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012688" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01268A" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01270C" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01270E" storagetype="uint16" endian="big" sizex="1" sizey="18" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="18">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01260C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01260E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0126CA" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0126CC" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012756" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012758" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012790" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012792" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x0127CC" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x0127CE" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x01281C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x01281E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x01287E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x012880" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x0128E0" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x0128E2" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01294A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x01294C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0129AC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0129AE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x012A0E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012A10" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012A70" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012A72" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x012B28" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x012B2A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x012B8A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x012B8C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01DC1C" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC1C as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01DC72" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC72 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01DC70" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC70 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01DC4C" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC4C as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01DC6E" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC6E as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01DC14" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC14 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01DC6C" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC6C as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01DC16" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC16 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01DC2E" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC2E as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01DC30" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC30 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01DC32" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC32 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01DC34" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC34 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01DC8A" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC8A as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01DC6A" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC6A as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01DC22" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC22 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01DC2C" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC2C as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01DC2A" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC2A as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01DCAE" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCAE as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01DC24" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC24 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01DCAC" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCAC as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01DC26" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC26 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01DCAA" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCAA as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01DC68" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC68 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01DCA8" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCA8 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01DC66" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC66 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01DCA6" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCA6 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01DC88" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC88 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01DC64" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC64 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD0" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD0 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCE" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCE as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCC" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCC as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01DCCA" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCCA as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01DCC8" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCC8 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01DCC6" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCC6 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01DCC4" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCC4 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01DCD2" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCD2 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01DC28" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC28 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01DC36" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC36 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01DC94" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC94 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01DC98" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC98 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01DC96" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC96 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01DC7C" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC7C as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01DC7A" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC7A as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01DC78" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC78 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01DC76" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC76 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01DC8E" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC8E as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01DC8C" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC8C as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01DC74" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DC74 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01DCBC" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCBC as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01DCBA" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCBA as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01DCB8" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCB8 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01DCB6" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCB6 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01DCB4" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DCB4 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_ACD1A06000</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB558D20</internalidstring>
   <caseid>Q6E</caseid>
   <ecuid>ACD1A06000</ecuid>
   <version>ACD1A06000</version>
   <year>2007</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>ACD1A06000 (JDM 2007)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>512kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: ACD1A06000  (cal ID MB558D20, JDM, 512kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01D411" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01D411" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B2" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01049A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104CC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010516" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x0104FE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010548" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010530" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01057A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010562" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011522" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x01150E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01154C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011538" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011576" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011562" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115A0" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x01158C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115CA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115B6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01164A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011636" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011674" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011660" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01169E" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x01168A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116C8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116B4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116F2" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x0116DE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DB6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DAC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E04" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E38" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E2E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E44" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E64" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E5A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E7A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E70" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E90" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E86" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01133C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011332" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011352" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011348" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011368" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01135E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01137E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011374" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011394" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108EA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108D6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010914" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010900" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118A8" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x01189C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011736" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011720" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011764" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01174E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011792" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x01177C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117C0" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117AA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117EE" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x0117D8" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01191E" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x0118FE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011960" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011940" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01183A" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011824" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x017BBE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x017984" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,24,28,-1,32,37,-1,-1,-1,-1,41,45,49,53,57,299,-1,-1,-1,-1,-1,-1,-1,-1,303,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x017984" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,313,-1,-1,-1,-1,-1,-1,-1,-1,317,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x017984" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,62,66,70,74,78,82,86,90,-1,94,128,-1,132,136,140,144,148,152,-1,156,37,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,165,169,173,177,181,185,189,327,-1,-1,-1,-1,-1,-1,-1,-1,331" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x017984" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,-1,8,12,16,20,24,28,-1,32,62,66,-1,70,74,78,82,86,90,-1,94,128,-1,-1,132,136,140,144,148,152,-1,156,194,198,202,206,210,214,218,222,226,-1,230,37,-1,-1,-1,-1,-1,41,45,49,53,57,99,-1,-1,-1,-1,103,107,111,115,119,123,161,-1,-1,-1,165,169,173,177,181,185,189,235,239,243,247,251,255,259,263,267,271,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x018006" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017EF4" storagetype="uint16" endian="big" sizex="5" sizey="5" cellIndices="0,4,8,-1,12,17,-1,-1,21,25,151,-1,-1,-1,155,165,-1,-1,-1,169,179,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="5">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017EF4" storagetype="uint16" endian="big" sizex="7" sizey="6" cellIndices="0,-1,4,8,-1,-1,12,30,34,38,42,-1,-1,46,17,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,165,-1,-1,-1,-1,-1,169,179,-1,-1,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017EF4" storagetype="uint16" endian="big" sizex="7" sizey="7" cellIndices="0,-1,4,8,-1,-1,12,30,34,38,42,-1,-1,46,64,68,72,76,-1,-1,80,17,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,85,-1,-1,-1,89,-1,93,179,-1,-1,-1,-1,-1,183" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017EF4" storagetype="uint16" endian="big" sizex="7" sizey="8" cellIndices="0,-1,4,8,-1,-1,12,30,34,38,42,-1,-1,46,64,68,72,76,-1,-1,80,98,102,106,110,-1,-1,114,17,-1,-1,-1,-1,21,25,51,-1,-1,-1,55,-1,59,85,-1,-1,-1,89,-1,93,119,-1,-1,123,-1,-1,127" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>18.8</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x01791E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x01772C" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,263,-1,-1,-1,-1,-1,267,277,-1,-1,-1,-1,-1,281,291,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x01772C" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,-1,54,58,62,66,-1,-1,70,21,-1,-1,25,29,33,37,41,45,75,79,-1,83,87,91,95,-1,99,277,-1,-1,-1,-1,-1,-1,-1,281,291,-1,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x01772C" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,-1,-1,54,58,62,66,-1,-1,70,104,-1,-1,108,112,116,120,-1,-1,124,21,-1,-1,-1,25,29,33,37,41,45,75,79,-1,-1,83,87,91,95,-1,99,129,133,137,141,145,149,153,157,161,165,291,-1,-1,-1,-1,-1,-1,-1,-1,295" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x01772C" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,-1,-1,54,58,62,66,-1,-1,70,104,-1,-1,108,112,116,120,-1,-1,124,170,174,178,182,186,190,194,-1,-1,198,21,-1,-1,-1,25,29,33,37,41,45,75,79,-1,-1,83,87,91,95,-1,99,129,133,137,141,145,149,153,157,161,165,203,207,211,215,219,223,227,231,235,239" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x017326" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="9,13,27,31,45,49,0,4,18,22,36,40,54,58" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x017E76" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="9,13,27,31,45,49,0,4,18,22,36,40,54,58" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x017284" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,36,40,54,58,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017DD4" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,36,40,54,58,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x0171F4" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,54,58,9,13,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x017D44" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,54,58,9,13,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x017164" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,36,40,9,13,27,31,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x017CB4" storagetype="uint16" endian="big" sizex="2" sizey="6" cellIndices="0,4,18,22,36,40,9,13,27,31,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x0170D4" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x017C24" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x01706E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,243,-1,-1,-1,-1,-1,247,257,-1,-1,-1,-1,-1,261,271,-1,-1,-1,-1,-1,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,-1,-1,74,21,-1,-1,25,29,33,37,41,45,79,-1,-1,83,-1,-1,-1,87,91,257,-1,-1,-1,-1,-1,-1,-1,261,271,-1,-1,-1,-1,-1,-1,-1,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,-1,-1,74,96,-1,100,104,108,112,116,120,-1,124,21,-1,-1,-1,25,29,33,37,41,45,79,-1,-1,-1,83,-1,-1,-1,87,91,129,-1,-1,133,-1,-1,-1,-1,137,141,271,-1,-1,-1,-1,-1,-1,-1,-1,275" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,-1,-1,74,96,-1,-1,100,104,108,112,116,120,-1,124,146,-1,-1,150,154,158,162,166,170,-1,174,21,-1,-1,-1,-1,25,29,33,37,41,45,79,-1,-1,-1,-1,83,-1,-1,-1,87,91,129,-1,-1,-1,133,-1,-1,-1,-1,137,141,179,183,187,191,195,199,203,207,211,215,219" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x0176C6" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x0173A4" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,-1,41,45,415,-1,-1,-1,-1,-1,-1,-1,419,429,-1,-1,-1,-1,-1,-1,-1,433,443,-1,-1,-1,-1,-1,-1,-1,447" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x0173A4" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,-1,87,91,95,99,429,-1,-1,-1,-1,-1,-1,-1,433,443,-1,-1,-1,-1,-1,-1,-1,447" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x01755C" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,-1,4,8,12,16,20,-1,24,-1,28,50,-1,54,58,62,66,70,-1,74,-1,78,104,108,112,116,120,124,128,-1,132,-1,136,33,-1,-1,-1,-1,-1,37,-1,-1,41,45,83,-1,-1,-1,-1,-1,87,-1,91,95,99,141,-1,-1,-1,-1,145,-1,149,-1,153,157,167,-1,-1,-1,-1,-1,-1,-1,-1,-1,171" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x0173A4" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,4,8,12,16,20,-1,24,-1,28,50,-1,54,58,62,66,70,-1,74,-1,78,104,108,112,116,120,124,128,-1,132,-1,136,162,166,170,174,178,182,186,-1,190,-1,194,33,-1,-1,-1,-1,-1,37,-1,-1,41,45,83,-1,-1,-1,-1,-1,87,-1,91,95,99,141,-1,-1,-1,-1,145,-1,149,-1,153,157,199,-1,-1,-1,203,-1,207,-1,-1,211,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x0169FE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x01683C" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,37,-1,41,45,239,-1,-1,-1,-1,-1,-1,-1,243,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x01683C" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,50,54,58,62,66,70,74,-1,78,33,-1,-1,-1,-1,37,-1,41,45,83,-1,-1,-1,-1,87,91,95,99,253,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x01683C" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,-1,4,8,12,16,20,-1,24,-1,28,50,-1,54,58,62,66,70,-1,74,-1,78,104,108,112,116,120,124,128,-1,132,-1,136,33,-1,-1,-1,-1,-1,37,-1,-1,41,45,83,-1,-1,-1,-1,-1,87,-1,91,95,99,141,-1,-1,-1,-1,145,-1,149,-1,153,157,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x01683C" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,4,8,12,16,20,-1,24,-1,28,50,-1,54,58,62,66,70,-1,74,-1,78,104,108,112,116,120,124,128,-1,132,-1,136,162,166,170,174,178,182,186,-1,190,-1,194,33,-1,-1,-1,-1,-1,37,-1,-1,41,45,83,-1,-1,-1,-1,-1,87,-1,91,95,99,141,-1,-1,-1,-1,145,-1,149,-1,153,157,199,-1,-1,-1,203,-1,207,-1,-1,211,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x016E3E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x016C6C" storagetype="uint16" endian="big" sizex="7" sizey="5" cellIndices="0,4,8,12,-1,-1,16,21,25,29,33,37,41,45,247,-1,-1,-1,-1,-1,251,261,-1,-1,-1,-1,-1,265,275,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x016C6C" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,-1,-1,4,8,12,-1,-1,16,50,54,58,62,66,70,74,-1,78,21,-1,-1,25,29,33,37,41,45,83,-1,-1,87,-1,-1,-1,91,95,261,-1,-1,-1,-1,-1,-1,-1,265,275,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x016C6C" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,58,62,66,70,74,-1,78,100,-1,104,108,112,116,120,124,-1,128,21,-1,-1,-1,25,29,33,37,41,45,83,-1,-1,-1,87,-1,-1,-1,91,95,133,-1,-1,137,-1,-1,-1,-1,141,145,275,-1,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x016C6C" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,-1,-1,4,8,12,-1,-1,16,50,54,-1,-1,58,62,66,70,74,-1,78,100,-1,-1,104,108,112,116,120,124,-1,128,150,-1,-1,154,158,162,166,170,174,-1,178,21,-1,-1,-1,-1,25,29,33,37,41,45,83,-1,-1,-1,-1,87,-1,-1,-1,91,95,133,-1,-1,-1,137,-1,-1,-1,-1,141,145,183,187,191,195,199,203,207,211,215,219,223" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x016C06" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x016A64" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,-1,28,33,-1,-1,-1,-1,-1,-1,37,41,223,-1,-1,-1,-1,-1,-1,-1,227,237,-1,-1,-1,-1,-1,-1,-1,241,251,-1,-1,-1,-1,-1,-1,-1,255" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x016A64" storagetype="uint16" endian="big" sizex="9" sizey="6" cellIndices="0,4,8,12,16,20,24,-1,28,46,50,54,58,62,66,70,-1,74,33,-1,-1,-1,-1,-1,-1,37,41,79,-1,-1,-1,-1,83,-1,87,91,237,-1,-1,-1,-1,-1,-1,-1,241,251,-1,-1,-1,-1,-1,-1,-1,255" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x016A64" storagetype="uint16" endian="big" sizex="9" sizey="7" cellIndices="0,4,8,12,16,20,24,-1,28,46,50,54,58,62,66,70,-1,74,96,100,104,108,112,116,120,-1,124,33,-1,-1,-1,-1,-1,-1,37,41,79,-1,-1,-1,-1,83,-1,87,91,129,-1,-1,-1,133,-1,-1,137,141,251,-1,-1,-1,-1,-1,-1,-1,255" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x016A64" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,-1,4,8,12,16,20,24,-1,28,46,-1,-1,50,54,58,62,66,70,-1,74,96,-1,-1,100,104,108,112,116,120,-1,124,146,150,154,158,162,166,170,174,178,-1,182,33,-1,-1,-1,-1,-1,-1,-1,-1,37,41,79,-1,-1,-1,-1,-1,-1,83,-1,87,91,129,-1,-1,-1,-1,-1,133,-1,-1,137,141,187,-1,-1,-1,-1,191,-1,-1,-1,195,199" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0123C6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0123C8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012400" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012402" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124AE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124B0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01243A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01243C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124E8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124EA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01255C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01255E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012474" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012476" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012522" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012524" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012596" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012598" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0125D0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0125D2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x01260C" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x01260E" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x01265C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x01265E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0126BE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0126C0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012720" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012722" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01278A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x01278C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0127EC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0127EE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x01284E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012850" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x0128B0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x0128B2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x012968" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01296A" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0129C2" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0129C4" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01DE78" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE78 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01DECE" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DECE as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01DECC" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DECC as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01DEA8" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEA8 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01DECA" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DECA as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01DE70" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE70 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC8" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC8 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01DE72" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE72 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01DE8A" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE8A as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01DE8C" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE8C as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01DE8E" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE8E as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01DE90" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE90 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01DEE6" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEE6 as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC6" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC6 as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01DE7E" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE7E as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01DE88" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE88 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01DE86" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE86 as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01DF0A" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF0A as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01DE80" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE80 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01DF08" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF08 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01DE82" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE82 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01DF06" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF06 as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC4" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC4 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01DF04" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF04 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC2" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC2 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01DF02" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF02 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01DEE4" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEE4 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01DEC0" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEC0 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01DF2C" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF2C as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01DF2A" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF2A as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01DF28" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF28 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01DF26" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF26 as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01DF24" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF24 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01DF22" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF22 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01DF20" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF20 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01DF2E" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF2E as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01DE84" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE84 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01DE92" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DE92 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01DEF0" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEF0 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01DEF4" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEF4 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01DEF2" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEF2 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01DED8" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DED8 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01DED6" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DED6 as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01DED4" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DED4 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01DED2" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DED2 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01DEEA" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEEA as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01DEE8" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DEE8 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01DED0" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DED0 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01DF18" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF18 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01DF16" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF16 as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01DF14" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF14 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01DF12" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF12 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01DF10" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DF10 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91A0217300</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB4365</internalidstring>
   <caseid>Q0A</caseid>
   <ecuid>91A0217300</ecuid>
   <version>91A0217300</version>
   <year>Unknown</year>
   <market>EDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91A0217300 (EDM)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91A0217300  (cal ID MB4365, EDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01CC85" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01CC85" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010450" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x010438" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010482" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x01046A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x01049C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x0104CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010518" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010500" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0114EE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x0114DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011518" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011504" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011542" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x01152E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01156C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x011558" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011596" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x011582" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011616" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011602" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011640" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x01162C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01166A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x011656" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011694" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x011680" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116BE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x0116AA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D52" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D48" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D68" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D5E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D7E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D74" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D94" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D8A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DAA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DA0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DD4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DCA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DEA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DE0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E00" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DF6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E16" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E0C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E2C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E22" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011308" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0112FE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01131E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011314" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011334" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01132A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01134A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011340" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011360" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011356" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010886" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010872" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108B0" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01089C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x011874" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x011868" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011702" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x0116EC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011730" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01171A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01175E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x011748" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01178C" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x011776" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117BA" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x0117A4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0118EA" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x0118CA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01192C" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x01190C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011806" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x0117F0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EAA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EAC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EE4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EE6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F92" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F94" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F1E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F20" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FCC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FCE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012040" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012042" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F58" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F5A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012006" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012008" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01207A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01207C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120B4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120B6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x0120F0" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x0120F2" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x012140" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x012142" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121A2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121A4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012204" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012206" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01226E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x012270" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122D0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x012332" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012334" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012394" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012396" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x01244C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01244E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124AE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124B0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01D6F4" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D6F4 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01D74A" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D74A as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01D748" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D748 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01D724" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D724 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01D746" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D746 as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01D6EC" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D6EC as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01D744" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D744 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01D6EE" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D6EE as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01D706" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D706 as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01D708" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D708 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01D70A" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D70A as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01D70C" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D70C as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01D762" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D762 as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01D742" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D742 as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01D6FA" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D6FA as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01D704" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D704 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01D702" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D702 as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01D786" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D786 as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01D6FC" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D6FC as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01D784" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D784 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01D6FE" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D6FE as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01D782" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D782 as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01D740" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D740 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01D780" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D780 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01D73E" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D73E as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01D77E" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D77E as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01D760" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D760 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01D73C" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D73C as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A8" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A8 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A6" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A6 as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A4" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A4 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A2" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A2 as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A0" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A0 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01D79E" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D79E as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01D79C" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D79C as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01D7AA" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7AA as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01D700" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D700 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01D70E" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D70E as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01D76C" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D76C as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01D770" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D770 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01D76E" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D76E as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01D754" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D754 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01D752" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D752 as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01D750" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D750 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01D74E" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D74E as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01D766" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D766 as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01D764" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D764 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01D74C" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D74C as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01D794" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D794 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01D792" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D792 as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01D790" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D790 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01D78E" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78E as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01D78C" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78C as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91A0217400</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB4372</internalidstring>
   <caseid>Q3M</caseid>
   <ecuid>91A0217400</ecuid>
   <version>91A0217400</version>
   <year>Unknown</year>
   <market>EDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91A0217400 (EDM)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>512kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91A0217400  (cal ID MB4372, EDM, 512kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01CEFD" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01CEFD" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010450" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x010438" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010482" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x01046A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x01049C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x0104CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010518" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010500" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0114EE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x0114DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011518" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011504" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011542" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x01152E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01156C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x011558" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011596" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x011582" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011616" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011602" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011640" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x01162C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01166A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x011656" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011694" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x011680" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116BE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x0116AA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D52" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D48" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D68" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D5E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D7E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D74" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D94" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D8A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DAA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DA0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DD4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DCA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DEA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DE0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E00" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DF6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E16" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E0C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E2C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E22" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011308" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0112FE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01131E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011314" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011334" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01132A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01134A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011340" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011360" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011356" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010886" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010872" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108B0" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01089C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x011874" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x011868" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011702" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x0116EC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011730" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01171A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01175E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x011748" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01178C" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x011776" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117BA" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x0117A4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0118EA" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x0118CA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01192C" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x01190C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011806" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x0117F0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EAA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EAC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EE4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EE6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F92" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F94" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F1E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F20" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FCC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FCE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012040" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012042" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F58" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F5A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012006" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012008" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01207A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01207C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120B4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120B6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x0120F0" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x0120F2" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x012140" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x012142" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121A2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121A4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012204" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012206" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01226E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x012270" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122D0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x012332" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012334" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012394" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012396" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x01244C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01244E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124AE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124B0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01D96C" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D96C as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01D9C2" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9C2 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01D9C0" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9C0 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01D99C" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D99C as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01D9BE" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9BE as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01D964" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D964 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01D9BC" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9BC as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01D966" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D966 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01D97E" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D97E as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01D980" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D980 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01D982" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D982 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01D984" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D984 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01D9DA" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9DA as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01D9BA" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9BA as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01D972" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D972 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01D97C" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D97C as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01D97A" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D97A as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01D9FE" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9FE as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01D974" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D974 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01D9FC" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9FC as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01D976" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D976 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01D9FA" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9FA as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01D9B8" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9B8 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01D9F8" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9F8 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01D9B6" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9B6 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01D9F6" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9F6 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01D9D8" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9D8 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01D9B4" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9B4 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01DA20" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA20 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01DA1E" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA1E as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01DA1C" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA1C as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01DA1A" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA1A as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01DA18" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA18 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01DA16" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA16 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01DA14" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA14 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01DA22" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA22 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01D978" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D978 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01D986" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D986 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01D9E4" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9E4 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01D9E8" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9E8 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01D9E6" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9E6 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01D9CC" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9CC as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01D9CA" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9CA as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01D9C8" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9C8 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01D9C6" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9C6 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01D9DE" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9DE as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01D9DC" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9DC as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01D9C4" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D9C4 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01DA0C" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA0C as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01DA0A" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA0A as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01DA08" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA08 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01DA06" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA06 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01DA04" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01DA04 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91A1207300</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB4364</internalidstring>
   <caseid>QZ9</caseid>
   <ecuid>91A1207300</ecuid>
   <version>91A1207300</version>
   <year>Unknown</year>
   <market>EDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91A1207300 (EDM)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91A1207300  (cal ID MB4364, EDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01010A" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01CA61" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01CA61" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010450" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x010438" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010482" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x01046A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x01049C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x0104CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010518" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010500" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0114EE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x0114DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011518" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011504" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011542" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x01152E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01156C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x011558" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011596" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x011582" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011616" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011602" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011640" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x01162C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01166A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x011656" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011694" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x011680" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116BE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x0116AA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D52" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D48" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D68" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D5E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D7E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D74" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010D94" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010D8A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DAA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DA0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DD4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DCA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010DEA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DE0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E00" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DF6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E16" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E0C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E2C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E22" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011308" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0112FE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01131E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011314" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011334" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01132A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01134A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011340" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011360" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011356" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010886" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010872" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108B0" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01089C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x011874" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x011868" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011702" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x0116EC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011730" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01171A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01175E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x011748" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01178C" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x011776" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117BA" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x0117A4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0118EA" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x0118CA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01192C" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x01190C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011806" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x0117F0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EAA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EAC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011EE4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011EE6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F92" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F94" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F1E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F20" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FCC" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FCE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012040" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012042" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F58" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F5A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012006" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012008" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01207A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01207C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120B4" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120B6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x0120F0" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x0120F2" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x012140" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x012142" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121A2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121A4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012204" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x012206" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01226E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x012270" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122D0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x012332" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x012334" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012394" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012396" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x01244C" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x01244E" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124A6" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124A8" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01D4D0" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4D0 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01D526" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D526 as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01D524" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D524 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01D500" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D500 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01D522" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D522 as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01D4C8" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4C8 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01D520" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D520 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01D4CA" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4CA as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E2" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E2 as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E4" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E4 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E6" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E6 as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E8" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E8 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01D53E" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D53E as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01D51E" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D51E as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01D4D6" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4D6 as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01D4E0" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4E0 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01D4DE" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4DE as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01D562" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D562 as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01D4D8" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4D8 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01D560" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D560 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01D4DA" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4DA as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01D55E" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D55E as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01D51C" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D51C as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01D55C" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D55C as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01D51A" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D51A as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01D55A" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D55A as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01D53C" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D53C as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01D518" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D518 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01D584" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D584 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01D582" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D582 as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01D580" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D580 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01D57E" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D57E as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01D57C" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D57C as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01D57A" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D57A as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01D578" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D578 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01D586" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D586 as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01D4DC" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4DC as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01D4EA" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D4EA as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01D548" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D548 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01D54C" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D54C as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01D54A" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D54A as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01D530" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D530 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01D52E" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D52E as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01D52C" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D52C as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01D52A" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D52A as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01D542" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D542 as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01D540" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D540 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01D528" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D528 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01D570" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D570 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01D56E" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D56E as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01D56C" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D56C as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01D56A" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D56A as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01D568" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D568 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_91FE207100</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB436L</internalidstring>
   <caseid>Q2Z</caseid>
   <ecuid>91FE207100</ecuid>
   <version>91FE207100</version>
   <year>2005</year>
   <market>USDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>91FE207100 (USDM Legacy GT 2005)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>384kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 91FE207100  (cal ID MB436L, USDM, 384kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01C3F5" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01C3F5" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01049C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010518" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x010500" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01054A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010532" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01057C" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010564" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011552" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x01153E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01157C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011568" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115A6" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011592" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115D0" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x0115BC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115FA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115E6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01167A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011666" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116A4" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011690" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116CE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x0116BA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116F8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116E4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011722" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x01170E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DB6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DAC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E04" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E38" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E2E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E44" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E64" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E5A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E7A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E70" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E90" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E86" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01136C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011362" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011382" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011378" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011398" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113AE" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113A4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113C4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113BA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108EA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108D6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010914" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010900" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118D8" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x0118CC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011766" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011750" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011794" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01177E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117C2" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x0117AC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117F0" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01181E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x011808" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01194E" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x01192E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011990" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011970" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01186A" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011854" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F0E" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F10" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F50" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F52" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012016" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012018" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F92" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F94" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012058" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01205A" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120DC" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120DE" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FD4" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FD6" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01209A" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01209C" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01211E" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012120" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012160" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012162" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x01219C" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x01219E" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121EC" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121EE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x01224E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x012250" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122B0" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122B2" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01231A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x01231C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x01237C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x01237E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x0123DE" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x0123E0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012440" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012442" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124F8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124FA" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x01255A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x01255C" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01CE64" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE64 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBA" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBA as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB8" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB8 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01CE94" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE94 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB6" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB6 as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01CE5C" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE5C as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB4" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB4 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01CE5E" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE5E as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01CE76" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE76 as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01CE78" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE78 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01CE7A" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE7A as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01CE7C" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE7C as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01CED2" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED2 as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB2" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB2 as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01CE6A" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE6A as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01CE74" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE74 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01CE72" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE72 as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF6" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF6 as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01CE6C" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE6C as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF4" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF4 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01CE6E" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE6E as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF2" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF2 as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01CEB0" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEB0 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01CEF0" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEF0 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01CEAE" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEAE as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01CEEE" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEEE as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01CED0" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED0 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01CEAC" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEAC as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01CF18" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF18 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01CF16" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF16 as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01CF14" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF14 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01CF12" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF12 as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01CF10" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF10 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01CF0E" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF0E as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01CF0C" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF0C as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01CF1A" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF1A as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01CE70" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE70 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01CE7E" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CE7E as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01CEDC" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEDC as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01CEE0" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEE0 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01CEDE" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEDE as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01CEC4" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEC4 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01CEC2" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEC2 as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01CEC0" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEC0 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBE" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBE as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01CED6" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED6 as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01CED4" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CED4 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01CEBC" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEBC as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01CF04" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF04 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01CF02" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF02 as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01CF00" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CF00 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01CEFE" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEFE as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01CEFC" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01CEFC as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_AAD1A06000</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB4402</internalidstring>
   <caseid>Q0H</caseid>
   <ecuid>AAD1A06000</ecuid>
   <version>AAD1A06000</version>
   <year>Unknown</year>
   <market>JDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>AAD1A06000 (JDM)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>512kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: AAD1A06000  (cal ID MB4402, JDM, 512kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x010182" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x010182" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x010182" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01CD05" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01CD05" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104C6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x0104AE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104F8" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104E0" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01052A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x010512" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01055C" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010544" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01058E" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010576" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011566" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x011552" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011590" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x01157C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115BA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x0115A6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115E4" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x0115D0" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01160E" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115FA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01168E" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x01167A" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116B8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x0116A4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116E2" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x0116CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01170C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116F8" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011736" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x011722" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCA" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE0" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E02" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E22" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E18" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E42" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E62" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E58" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E78" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E6E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E8E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E84" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010EA4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E9A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011380" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011376" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011396" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138C" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113AC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113A2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113C2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113B8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113D8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113CE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108FE" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108EA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010928" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010914" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118EC" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x0118E0" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01177A" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011764" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117A8" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x011792" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117D6" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x0117C0" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011804" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117EE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011832" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x01181C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011962" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x011942" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x0119A4" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011984" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01187E" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011868" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F4A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F4C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011F84" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011F86" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012032" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012034" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FBE" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FC0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01206C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01206E" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120E0" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120E2" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x011FF8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x011FFA" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0120A6" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0120A8" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01211A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01211C" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012154" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012156" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x012190" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x012192" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x0121E0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x0121E2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x012242" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x012244" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x0122A4" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x0122A6" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x01230E" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x012310" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x012370" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x012372" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x0123D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x0123D4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012434" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x012436" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x0124EC" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x0124EE" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x012546" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x012548" storagetype="uint16" endian="big" sizex="1" sizey="22" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="22">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01D774" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D774 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01D7CA" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7CA as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C8" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C8 as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A4" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A4 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C6" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C6 as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01D76C" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D76C as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C4" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C4 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01D76E" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D76E as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01D786" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D786 as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01D788" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D788 as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01D78A" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78A as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01D78C" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78C as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E2" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E2 as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C2" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C2 as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01D77A" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D77A as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01D784" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D784 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01D782" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D782 as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01D806" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D806 as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01D77C" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D77C as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01D804" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D804 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01D77E" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D77E as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01D802" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D802 as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C0" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C0 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01D800" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D800 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01D7BE" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7BE as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01D7FE" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7FE as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E0" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E0 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01D7BC" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7BC as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01D828" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D828 as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01D826" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D826 as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01D824" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D824 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01D822" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D822 as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01D820" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D820 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01D81E" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D81E as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01D81C" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D81C as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01D82A" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D82A as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01D780" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D780 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01D78E" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78E as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01D7EC" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7EC as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01D7F0" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7F0 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01D7EE" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7EE as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D4" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D4 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D2" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D2 as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D0" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D0 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01D7CE" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7CE as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E6" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E6 as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E4" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E4 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01D7CC" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7CC as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01D814" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D814 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01D812" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D812 as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01D810" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D810 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01D80E" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D80E as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01D80C" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D80C as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

 <rom>
  <romid>
   <xmlid>SUBARU_5EAT_8AF0237300</xmlid>
   <internalidaddress>0x8008</internalidaddress>
   <internalidstring>MB500NJ0</internalidstring>
   <caseid>Q7A</caseid>
   <ecuid>8AF0237300</ecuid>
   <version>8AF0237300</version>
   <year>2006</year>
   <market>USDM</market>
   <make>Subaru</make>
   <model>5EAT TCU</model>
   <submodel>8AF0237300 (USDM Tribeca 2006)</submodel>
   <transmission>5EAT</transmission>
   <memmodel>M32R</memmodel>
   <flashmethod>None</flashmethod>
   <filesize>512kb</filesize>
  </romid>
  <!-- RomRaider fixes the checksum itself on save. The 5EAT algorithm is a
       32-bit big-endian two's-complement additive sum stored twice at 0x8000
       and 0x8004, over a region that is NOT the same in every image - see
       ChecksumSUBARUTCU, which detects it per ROM. Requires the patched build
       in romraider-5eat/; stock RomRaider has no manager of this type and will
       warn that it cannot find one. -->
  <checksum type="subarutcu" />

  <!-- ============ Info ============ -->
  <table type="Switch" name="Read This First" category="Info" storageaddress="0x008008" sizey="1" locked="true">
   <description>Firmware: 8AF0237300  (cal ID MB500NJ0, USDM, 512kb)

Subaru 5EAT TCU (5-speed automatic transmission control unit), Mitsubishi/Renesas M32R CPU.

Firmware: 91D1206000 (MB431M / R9H)

Origin: JDM TCU, MCU wa12212953www (M32R, 144-pin, 384KB). Most likely a 2003-2004 JDM Legacy — the market is stated by the person who dumped it, but the exact year/model is NOT confirmed (the unit had no housing or part-number label). Note this is NOT the 05-06 USDM TCU, which uses a different MCU.

Confirmed: table addresses, DTC list, checksum, gear ratios (raw/1024), Confirmed conversions: gear ratios (raw/1024), engine speed (raw/8), temperature (raw-40 degC), vehicle speed (km/h), accelerator pedal angle (raw/255 = 0-100%). Anything left as "raw" has no confirmed conversion. Pressure units are NOT confirmed and are not stored in the ROM. See docs/TECHNICAL-NOTES.md for detail.

REQUIRES RomRaider 1.0.0 or later. The shift schedule and record curves are 3D tables; RomRaider 0.8.2 reports "There was an error loading table" for them.

This is a static file editor only — cannot connect live to the vehicle through RomRaider. Run tools/checksum.py after any edit, before flashing.</description>
   <state name="(see description below)" data="4D" />
  </table>

  <!-- ============ Shift Schedule Group Selector ============ -->
  <table type="3D" name="Shift Schedule Group Selector" category="Transmission - Shift Schedule" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4" sizey="5" userlevel="4">
   <scaling units="selector code (hex)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   <table type="X Axis" name="Shift Schedule Group Selector (column)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizex="4">
    <scaling units="sub-index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <table type="Y Axis" name="Shift Schedule Group Selector (row)" storageaddress="0x01016E" storagetype="uint8" endian="big" sizey="5">
    <scaling units="index" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>SHIFT SCHEDULE GROUP SELECTOR. The transmission carries ten complete shift schedules in each of five groups, and this table decides which GROUP is in use.

Each cell holds a selector code, not a number to scale:
  0x81, 0x82, 0x83, 0x85  select schedule groups 2, 3, 4 and 1
  0x80, 0x84, 0x8C        select group 0
  0xFF                    no override - the current position stands
  0x00                    entry unused

The firmware reads it as base + index*4 + a sub-index of -3 to +4, so the rows and columns here are the raw storage rather than two named axes; what indexes it is not established.

Worth knowing before changing anything: three firmwares - ACD1207000, ACD1A06000 and ADE0236000 - carry 0x83 where the other thirteen carry 0xFF. Those images force a gear limit where the rest leave the selector alone, so this table really does differ between calibrations and is not boilerplate.

Codes confirmed from the firmware's own comparison chain, which tests exactly 0x80 to 0x85 and 0x8C.</description>
  </table>

  <!-- ============ ATF Blend Window ============ -->
  <table type="2D" name="ATF Blend Window" category="Transmission - Sensor Calibration" storagetype="uint8" endian="big" storageaddress="0x01CD09" sizex="2" userlevel="1">
   <scaling units="C (ATF temperature)" expression="x-40" to_byte="x+40" format="0" fineincrement="1" coarseincrement="5" />
   <table type="X Axis" name="ATF Blend Window (breakpoint)" storageaddress="0x01CD09" storagetype="uint8" endian="big">
    <scaling units="1 = cold limit, 2 = warm limit" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="1" />
   </table>
   <description>ATF TEMPERATURE BLEND WINDOW. Below the first temperature the transmission uses its cold calibration for solenoid target pressure; above the second it uses the warm one; between them it interpolates linearly between the two.

This is not per-gear or per-solenoid - all seven solenoid channels read the same pair, so widening or narrowing the window changes when every clutch and brake hands over from cold to warm behaviour.

Stock is 15 C to 135 C in every firmware examined. Raising the lower figure keeps cold-ATF pressures in use for longer; lowering the upper figure reaches full warm behaviour sooner.

Confirmed by following all seven solenoid drivers in the decompiled firmware, which interpolate on exactly these two bytes against the ATF reading.</description>
  </table>

  <!-- ============ Transmission - Speed Trim A ============ -->
  <table type="2D" name="Gear 1 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104B4" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Speed Trim A (Engine speed)" storageaddress="0x01049C" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 2 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x0104E6" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Speed Trim A (Engine speed)" storageaddress="0x0104CE" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 3 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x010518" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Speed Trim A (Engine speed)" storageaddress="0x010500" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 4 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01054A" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Speed Trim A (Engine speed)" storageaddress="0x010532" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <table type="2D" name="Gear 5 Speed Trim A" category="Transmission - Speed Trim A" storagetype="uint16" endian="big" storageaddress="0x01057C" sizex="12" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Speed Trim A (Engine speed)" storageaddress="0x010564" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Speed-based trim value, indexed by engine speed. The RPM axis scale is code-derived (raw/8), not a guess — see the Info entry.</description>
  </table>

  <!-- ============ Transmission - Slip Detection ============ -->
  <table type="2D" name="Gear 1 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x011552" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Detection Threshold (Engine speed)" storageaddress="0x01153E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 2 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x01157C" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Detection Threshold (Engine speed)" storageaddress="0x011568" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 3 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115A6" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Detection Threshold (Engine speed)" storageaddress="0x011592" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 4 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115D0" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Detection Threshold (Engine speed)" storageaddress="0x0115BC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <table type="2D" name="Gear 5 Slip Detection Threshold" category="Transmission - Slip Detection" storagetype="uint16" endian="big" storageaddress="0x0115FA" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Detection Threshold (Engine speed)" storageaddress="0x0115E6" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Threshold curve used to detect clutch/converter slip, indexed by engine speed. Data values are a speed in the same internal units the TCU compares against (engine speed x gear ratio).</description>
  </table>

  <!-- ============ Transmission - Reference Speed ============ -->
  <table type="2D" name="Gear 1 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x01167A" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Reference Speed Baseline (Engine speed)" storageaddress="0x011666" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 2 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116A4" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Reference Speed Baseline (Engine speed)" storageaddress="0x011690" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 3 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116CE" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Reference Speed Baseline (Engine speed)" storageaddress="0x0116BA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 4 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x0116F8" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Reference Speed Baseline (Engine speed)" storageaddress="0x0116E4" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <table type="2D" name="Gear 5 Reference Speed Baseline" category="Transmission - Reference Speed" storagetype="uint16" endian="big" storageaddress="0x011722" sizex="10" userlevel="1">
   <scaling units="units of 1/256 (quantity not established)" expression="x/256" to_byte="x*256" format="0.00" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Reference Speed Baseline (Engine speed)" storageaddress="0x01170E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Expected/baseline speed curve — the actual speed signal is compared against this to detect slip. Feeds the X-axis of the Pressure Control B/C and Shift Solenoid Control tables.</description>
  </table>

  <!-- ============ Transmission - Pressure Control B ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DB6" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DAC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DCC" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DC2" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DE2" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DD8" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010DF8" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010DEE" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure B" category="Transmission - Pressure Control B" storagetype="uint16" endian="big" storageaddress="0x010E0E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure B (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E04" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Pressure/duty correction curve. The X-input is (accelerator pedal angle x 256) minus the Reference Speed Baseline lookup — a difference, so the axis itself is raw even though both operands are now identified. Pedal angle arrives on CAN 0x412 byte 0 as raw 0-255 = 0-100%. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Pressure Control C ============ -->
  <table type="2D" name="Gear 1 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E38" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E2E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 2 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E4E" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E44" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 3 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E64" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E5A" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 4 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E7A" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E70" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <table type="2D" name="Gear 5 Slip Comp Pressure C" category="Transmission - Pressure Control C" storagetype="uint16" endian="big" storageaddress="0x010E90" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Slip Comp Pressure C (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010E86" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Alternate-mode counterpart to Pressure Control B — same role, used under a different operating condition. Stock values are flat (20) in every gear.</description>
  </table>

  <!-- ============ Transmission - Shift Solenoid Control ============ -->
  <table type="2D" name="Gear 1 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x01136C" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011362" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 2 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011382" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x011378" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 3 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x011398" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x01138E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 4 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113AE" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113A4" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <table type="2D" name="Gear 5 Shift Stage Value D" category="Transmission - Shift Solenoid Control" storagetype="uint16" endian="big" storageaddress="0x0113C4" sizex="5" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Stage Value D (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0113BA" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Shift solenoid control curve, indexed by slip amount. Stock data steps up with gear (6, 6, 6, 10, 10).</description>
  </table>

  <!-- ============ Transmission - Pressure Control E ============ -->
  <table type="2D" name="Mode 1 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x0108EA" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 1 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x0108D6" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 1 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <table type="2D" name="Mode 2 Pressure Threshold E" category="Transmission - Pressure Control E" storagetype="uint16" endian="big" storageaddress="0x010914" sizex="10" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Mode 2 Pressure Threshold E (Accelerator pedal angle x256 minus reference speed (raw))" storageaddress="0x010900" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Mode 2 of 2 (selected by an internal mode flag, not gear). Same slip-amount X-formula as Pressure Control B/C/D (confirmed via decompilation: X = smoothed reference * 256 - Reference Speed Baseline lookup). Stock data is flat (0) in both modes — a real, editable table even though it isn't currently varying.</description>
  </table>

  <!-- ============ Transmission - CAN Signal Thresholds ============ -->
  <table type="2D" name="CAN 0x511 Byte 4 Threshold Curve" category="Transmission - CAN Signal Thresholds" storagetype="uint16" endian="big" storageaddress="0x0118D8" sizex="6" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x511 Byte 4 Threshold Curve (CAN 0x511 byte 4 (from VDC/ABS), raw x1.301)" storageaddress="0x0118CC" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is CAN ID 0x511 payload byte 4, scaled by a fixed 333/256 (~x1.301) factor before this lookup. CAN 0x511 originates from the VDC/ABS module (bytes 0-1 are steering wheel angle, byte 6 vehicle G-force); byte 4 is not identified in the community CAN decoding. Stock data is flat (0) — real, editable, currently inert.</description>
  </table>

  <!-- ============ Transmission - Shift Correction ============ -->
  <table type="2D" name="Gear 1 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011766" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 1 Shift Correction (Engine speed)" storageaddress="0x011750" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 1 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 2 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x011794" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 2 Shift Correction (Engine speed)" storageaddress="0x01177E" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 2 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 3 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117C2" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 3 Shift Correction (Engine speed)" storageaddress="0x0117AC" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 3 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 4 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x0117F0" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 4 Shift Correction (Engine speed)" storageaddress="0x0117DA" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 4 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <table type="2D" name="Gear 5 Shift Correction" category="Transmission - Shift Correction" storagetype="int16" endian="big" storageaddress="0x01181E" sizex="11" userlevel="1">
   <scaling units="correction (raw, signed)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Gear 5 Shift Correction (Engine speed)" storageaddress="0x011808" storagetype="uint16" endian="big">
    <scaling units="RPM" expression="x/8" to_byte="x*8" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>Gear 5 of 5. Signed correction curve against engine speed, selected by a gear-indexed pointer array at 0x117A0. Gear 1 is all zeros (no correction), and the magnitude falls with each higher gear (about -1970 at the top of gear 2 down to -390 in gear 5) — the shape of a shift-shock or torque-phase correction.

Values are genuinely NEGATIVE and stored as signed 16-bit. Real-world units are not confirmed.

This family was only found after correcting the Ghidra M32R processor definition: the pointer array that selects it was unreadable before.</description>
  </table>

  <!-- ============ Transmission - Signal Response Curves ============ -->
  <table type="2D" name="CAN 0x410 Chain Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01194E" sizex="16" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="CAN 0x410 Chain Response Curve (Reference signal breakpoint (raw, pre-scale CAN 0x410 chain value))" storageaddress="0x01192E" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input confirmed via decompilation: the same ceiling-clamped CAN ID 0x410-derived reference value already traced in docs/TECHNICAL-NOTES.md (before its x256 scale-up), NOT gear-indexed — a single standalone curve. Stock data is a genuine hump shape: rises from 61 to a peak of 127 around the middle of the axis, then falls back to 0 at the high end — a real, currently-populated tunable curve.</description>
  </table>

  <table type="2D" name="Signal FE Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x011990" sizex="16" userlevel="1">
   <scaling units="units of 1/8 (quantity not established)" expression="x/8" to_byte="x*8" format="0.0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Signal FE Response Curve (Internal signal breakpoint (raw, source not fully traced))" storageaddress="0x011970" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is an internal RAM value (traced back through several conditional assignments in the decompiled code, but not yet to a specific sensor or CAN ID — see docs/TECHNICAL-NOTES.md). Stock data is a real, populated step curve (64 up to 256), not flat/placeholder.</description>
  </table>

  <table type="2D" name="Smoothed Signal Response Curve" category="Transmission - Signal Response Curves" storagetype="uint16" endian="big" storageaddress="0x01186A" sizex="11" userlevel="1">
   <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="16" />
   <table type="X Axis" name="Smoothed Signal Response Curve (Internal signal breakpoint (raw, x256 of a 0-255 byte))" storageaddress="0x011854" storagetype="uint16" endian="big">
    <scaling units="raw" expression="x" to_byte="x" format="0" fineincrement="16" coarseincrement="256" />
   </table>
   <description>X-input is the same internal signal as the 'Signal FE Response Curve' table, but smoothed through a calibratable first-order filter before this lookup (confirmed via decompilation: the filter target is that byte shifted left 8, i.e. x256). This is a DIFFERENT signal chain from the engine-speed tables, so the RPM scale used on those does NOT apply here — left raw deliberately. Stock data is a real, populated rising curve (200 up to 1189).</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 1" category="Transmission - Shift Schedule" storageaddress="0x017826" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 2" category="Transmission - Shift Schedule" storageaddress="0x01766C" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,-1,-1,41,45,235,-1,-1,-1,-1,-1,-1,-1,239,249,-1,-1,-1,-1,-1,-1,-1,253,263,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 3" category="Transmission - Shift Schedule" storageaddress="0x01766C" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,-1,20,24,28,-1,32,50,-1,-1,54,58,-1,62,66,70,-1,74,37,-1,-1,-1,-1,-1,-1,-1,41,-1,45,79,-1,-1,-1,-1,83,87,-1,91,95,99,249,-1,-1,-1,-1,-1,-1,-1,-1,-1,253,263,-1,-1,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, 4" category="Transmission - Shift Schedule" storageaddress="0x01766C" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,12,16,-1,20,24,28,-1,32,50,-1,-1,54,58,-1,62,66,70,-1,74,104,-1,108,112,116,-1,120,124,-1,-1,128,37,-1,-1,-1,-1,-1,-1,-1,41,-1,45,79,-1,-1,-1,-1,83,87,-1,91,95,99,133,-1,-1,-1,137,-1,141,145,-1,149,153,263,-1,-1,-1,-1,-1,-1,-1,-1,-1,267" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - ATFTempLow, D5" category="Transmission - Shift Schedule" storageaddress="0x01766C" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,8,12,16,-1,20,24,28,-1,32,50,-1,-1,54,58,-1,62,66,70,-1,74,104,-1,108,112,116,-1,120,124,-1,-1,128,158,162,166,170,174,-1,178,182,186,-1,190,37,-1,-1,-1,-1,-1,-1,-1,41,-1,45,79,-1,-1,-1,-1,83,87,-1,91,95,99,133,-1,-1,-1,137,-1,141,145,-1,149,153,195,-1,-1,-1,203,-1,207,-1,-1,-1,211" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in ATFTempLow drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 1" category="Transmission - Shift Schedule" storageaddress="0x017D2E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 2" category="Transmission - Shift Schedule" storageaddress="0x017B5C" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,-1,-1,41,45,247,-1,-1,-1,-1,-1,-1,-1,251,261,-1,-1,-1,-1,-1,-1,-1,265,275,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 3" category="Transmission - Shift Schedule" storageaddress="0x017B5C" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,16,-1,20,24,28,-1,32,50,54,58,62,66,-1,70,74,78,-1,82,37,-1,-1,-1,-1,-1,-1,-1,41,-1,45,87,-1,-1,-1,-1,91,95,-1,99,103,107,261,-1,-1,-1,-1,-1,-1,-1,-1,-1,265,275,-1,-1,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, 4" category="Transmission - Shift Schedule" storageaddress="0x017B5C" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,4,8,12,16,-1,20,24,28,-1,32,50,54,58,62,66,-1,70,74,78,-1,82,112,116,120,124,128,-1,132,136,-1,-1,140,37,-1,-1,-1,-1,-1,-1,-1,41,-1,45,87,-1,-1,-1,-1,91,95,-1,99,103,107,145,-1,-1,-1,149,-1,153,157,-1,161,165,275,-1,-1,-1,-1,-1,-1,-1,-1,-1,279" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - IMode, D5" category="Transmission - Shift Schedule" storageaddress="0x017B5C" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,4,8,12,16,-1,20,24,28,-1,32,50,54,58,62,66,-1,70,74,78,-1,82,112,116,120,124,128,-1,132,136,-1,-1,140,170,174,178,182,186,-1,190,194,198,-1,202,37,-1,-1,-1,-1,-1,-1,-1,41,-1,45,87,-1,-1,-1,-1,91,95,-1,99,103,107,145,-1,-1,-1,149,-1,153,157,-1,161,165,207,-1,-1,-1,215,-1,219,-1,-1,-1,223" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in IMode drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 1" category="Transmission - Shift Schedule" storageaddress="0x017606" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 2" category="Transmission - Shift Schedule" storageaddress="0x017474" storagetype="uint16" endian="big" sizex="6" sizey="5" cellIndices="0,4,8,12,16,20,25,-1,-1,-1,29,33,215,-1,-1,-1,-1,219,229,-1,-1,-1,-1,233,243,-1,-1,-1,-1,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="6">
    <data>0.0</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 3" category="Transmission - Shift Schedule" storageaddress="0x017474" storagetype="uint16" endian="big" sizex="7" sizey="6" cellIndices="0,-1,4,8,12,16,20,38,42,46,50,54,58,62,25,-1,-1,-1,-1,29,33,67,-1,-1,71,-1,75,79,229,-1,-1,-1,-1,-1,233,243,-1,-1,-1,-1,-1,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="7">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, 4" category="Transmission - Shift Schedule" storageaddress="0x017474" storagetype="uint16" endian="big" sizex="11" sizey="7" cellIndices="0,-1,4,8,12,-1,16,-1,-1,-1,20,38,42,46,50,54,-1,58,-1,-1,-1,62,84,88,92,96,100,-1,104,108,112,-1,116,25,-1,-1,-1,-1,-1,29,-1,-1,-1,33,67,-1,-1,71,-1,-1,75,-1,-1,-1,79,121,-1,-1,125,-1,129,-1,-1,-1,133,137,243,-1,-1,-1,-1,-1,-1,-1,-1,-1,247" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Kickdown, D5" category="Transmission - Shift Schedule" storageaddress="0x017474" storagetype="uint16" endian="big" sizex="11" sizey="8" cellIndices="0,-1,4,8,12,-1,16,-1,-1,-1,20,38,42,46,50,54,-1,58,-1,-1,-1,62,84,88,92,96,100,-1,104,108,112,-1,116,142,146,150,154,158,-1,162,166,170,-1,174,25,-1,-1,-1,-1,-1,29,-1,-1,-1,33,67,-1,-1,71,-1,-1,75,-1,-1,-1,79,121,-1,-1,125,-1,129,-1,-1,-1,133,137,179,-1,-1,187,-1,-1,-1,-1,-1,-1,191" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Kickdown drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1" category="Transmission - Shift Schedule" storageaddress="0x017054" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 1'" category="Transmission - Shift Schedule" storageaddress="0x017ACC" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2" category="Transmission - Shift Schedule" storageaddress="0x016FC4" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 2'" category="Transmission - Shift Schedule" storageaddress="0x017A3C" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3" category="Transmission - Shift Schedule" storageaddress="0x016F34" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,54,58,9,13,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 3'" category="Transmission - Shift Schedule" storageaddress="0x0179AC" storagetype="uint16" endian="big" sizex="2" sizey="7" cellIndices="0,4,18,22,36,40,54,58,9,13,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4" category="Transmission - Shift Schedule" storageaddress="0x016EA4" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, 4'" category="Transmission - Shift Schedule" storageaddress="0x01791C" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5" category="Transmission - Shift Schedule" storageaddress="0x016E14" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Manual, D5'" category="Transmission - Shift Schedule" storageaddress="0x01788C" storagetype="uint16" endian="big" sizex="2" sizey="8" cellIndices="0,4,18,22,36,40,54,58,9,13,27,31,45,49,63,67" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Manual drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 1" category="Transmission - Shift Schedule" storageaddress="0x016DAE" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 2" category="Transmission - Shift Schedule" storageaddress="0x016C04" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,28,32,37,-1,-1,-1,-1,-1,41,-1,-1,45,227,-1,-1,-1,-1,-1,-1,-1,-1,231,241,-1,-1,-1,-1,-1,-1,-1,-1,245,255,-1,-1,-1,-1,-1,-1,-1,-1,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 3" category="Transmission - Shift Schedule" storageaddress="0x016C04" storagetype="uint16" endian="big" sizex="11" sizey="6" cellIndices="0,4,8,12,-1,16,20,-1,24,28,32,50,54,58,62,-1,66,70,-1,74,-1,78,37,-1,-1,-1,-1,-1,-1,41,-1,-1,45,83,-1,-1,-1,87,91,-1,95,-1,-1,99,241,-1,-1,-1,-1,-1,-1,-1,-1,-1,245,255,-1,-1,-1,-1,-1,-1,-1,-1,-1,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="11">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, 4" category="Transmission - Shift Schedule" storageaddress="0x016C04" storagetype="uint16" endian="big" sizex="14" sizey="7" cellIndices="0,4,-1,8,12,-1,16,-1,20,-1,24,28,-1,32,50,54,-1,58,62,-1,66,-1,70,-1,74,-1,-1,78,104,108,112,116,120,-1,124,-1,128,-1,132,136,-1,140,37,-1,-1,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,83,-1,-1,-1,-1,87,91,-1,-1,95,-1,-1,-1,99,145,-1,-1,-1,-1,149,-1,153,-1,-1,-1,-1,157,161,255,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,259" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode3, D5" category="Transmission - Shift Schedule" storageaddress="0x016C04" storagetype="uint16" endian="big" sizex="14" sizey="8" cellIndices="0,4,-1,8,12,-1,16,-1,20,-1,24,28,-1,32,50,54,-1,58,62,-1,66,-1,70,-1,74,-1,-1,78,104,108,112,116,120,-1,124,-1,128,-1,132,136,-1,140,166,170,-1,174,178,-1,182,-1,-1,-1,-1,-1,-1,186,37,-1,-1,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,83,-1,-1,-1,-1,87,91,-1,-1,95,-1,-1,-1,99,145,-1,-1,-1,-1,149,-1,153,-1,-1,-1,-1,157,161,191,-1,-1,-1,-1,199,-1,-1,-1,-1,-1,-1,-1,203" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>12.5</data>
    <data>15.7</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode3 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 1" category="Transmission - Shift Schedule" storageaddress="0x01740E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 2" category="Transmission - Shift Schedule" storageaddress="0x0170E4" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,-1,41,-1,45,419,-1,-1,-1,-1,-1,-1,-1,423,433,-1,-1,-1,-1,-1,-1,-1,437,447,-1,-1,-1,-1,-1,-1,-1,451" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 3" category="Transmission - Shift Schedule" storageaddress="0x0170E4" storagetype="uint16" endian="big" sizex="10" sizey="6" cellIndices="0,4,8,12,16,20,24,28,-1,32,50,54,58,62,66,70,74,78,-1,82,37,-1,-1,-1,-1,-1,41,-1,-1,45,87,-1,-1,-1,-1,91,-1,-1,95,99,433,-1,-1,-1,-1,-1,-1,-1,-1,437,447,-1,-1,-1,-1,-1,-1,-1,-1,451" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, 4" category="Transmission - Shift Schedule" storageaddress="0x01729C" storagetype="uint16" endian="big" sizex="10" sizey="7" cellIndices="0,4,8,12,16,20,24,28,-1,32,50,54,58,62,66,70,74,78,-1,82,104,108,112,116,120,124,128,132,-1,136,37,-1,-1,-1,-1,-1,41,-1,-1,45,87,-1,-1,-1,-1,91,-1,-1,95,99,141,-1,-1,-1,145,149,153,-1,157,161,171,-1,-1,-1,-1,-1,-1,-1,-1,175" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Mode6, D5" category="Transmission - Shift Schedule" storageaddress="0x0170E4" storagetype="uint16" endian="big" sizex="10" sizey="8" cellIndices="0,4,8,12,16,20,24,28,-1,32,50,54,58,62,66,70,74,78,-1,82,104,108,112,116,120,124,128,-1,-1,132,162,166,170,174,178,182,186,190,-1,194,37,-1,-1,-1,-1,-1,41,-1,-1,45,87,-1,-1,-1,-1,91,-1,-1,95,99,137,-1,-1,-1,141,145,149,-1,153,157,199,-1,-1,-1,207,211,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Mode6 drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 1" category="Transmission - Shift Schedule" storageaddress="0x01672E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 2" category="Transmission - Shift Schedule" storageaddress="0x016554" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,-1,41,-1,45,251,-1,-1,-1,-1,-1,-1,-1,255,265,-1,-1,-1,-1,-1,-1,-1,269,279,-1,-1,-1,-1,-1,-1,-1,283" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 3" category="Transmission - Shift Schedule" storageaddress="0x016554" storagetype="uint16" endian="big" sizex="12" sizey="6" cellIndices="0,4,8,12,16,-1,20,24,-1,28,-1,32,50,54,58,62,66,-1,70,74,-1,78,-1,82,37,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,87,-1,-1,-1,-1,91,95,-1,99,-1,103,107,265,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,269,279,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,283" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, 4" category="Transmission - Shift Schedule" storageaddress="0x016554" storagetype="uint16" endian="big" sizex="12" sizey="7" cellIndices="0,4,8,12,16,-1,20,24,-1,28,-1,32,50,54,58,62,66,-1,70,74,-1,78,-1,82,112,116,120,124,128,-1,132,136,-1,140,-1,144,37,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,87,-1,-1,-1,-1,91,95,-1,99,-1,103,107,149,-1,-1,-1,153,-1,157,161,-1,-1,165,169,279,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,283" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Normal, D5" category="Transmission - Shift Schedule" storageaddress="0x016554" storagetype="uint16" endian="big" sizex="12" sizey="8" cellIndices="0,4,8,12,16,-1,20,24,-1,28,-1,32,50,54,58,62,66,-1,70,74,-1,78,-1,82,112,116,120,124,128,-1,132,136,-1,140,-1,144,174,178,182,186,190,-1,194,198,-1,202,-1,206,37,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,87,-1,-1,-1,-1,91,95,-1,99,-1,103,107,149,-1,-1,-1,153,-1,157,161,-1,-1,165,169,211,-1,-1,-1,219,-1,223,-1,-1,-1,-1,227" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Normal drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 1" category="Transmission - Shift Schedule" storageaddress="0x016B9E" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 2" category="Transmission - Shift Schedule" storageaddress="0x0169DC" storagetype="uint16" endian="big" sizex="10" sizey="5" cellIndices="0,4,8,12,16,20,-1,24,28,32,37,-1,-1,-1,-1,-1,41,-1,-1,45,239,-1,-1,-1,-1,-1,-1,-1,-1,243,253,-1,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="10">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 3" category="Transmission - Shift Schedule" storageaddress="0x0169DC" storagetype="uint16" endian="big" sizex="12" sizey="6" cellIndices="0,4,8,12,-1,16,20,-1,24,-1,28,32,50,54,58,62,-1,66,70,-1,74,-1,-1,78,37,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,83,-1,-1,-1,87,91,-1,95,-1,99,-1,103,253,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,257,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, 4" category="Transmission - Shift Schedule" storageaddress="0x0169DC" storagetype="uint16" endian="big" sizex="14" sizey="7" cellIndices="0,4,8,12,-1,16,-1,20,-1,24,-1,28,-1,32,50,54,58,62,-1,66,-1,70,-1,74,-1,-1,-1,78,108,112,116,120,-1,124,-1,128,-1,132,-1,136,-1,140,37,-1,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,-1,45,83,-1,-1,-1,87,91,-1,-1,95,-1,99,-1,-1,103,145,-1,-1,-1,149,-1,153,-1,-1,-1,-1,-1,157,161,267,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,271" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Slope, D5" category="Transmission - Shift Schedule" storageaddress="0x0169DC" storagetype="uint16" endian="big" sizex="14" sizey="8" cellIndices="0,4,8,12,-1,16,-1,20,-1,24,-1,28,-1,32,50,54,58,62,-1,66,-1,70,-1,74,-1,-1,-1,78,108,112,116,120,-1,124,-1,128,-1,132,-1,136,-1,140,166,170,174,178,-1,182,-1,186,-1,190,-1,194,-1,198,37,-1,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,-1,45,83,-1,-1,-1,87,91,-1,-1,95,-1,99,-1,-1,103,145,-1,-1,-1,149,-1,153,-1,-1,-1,-1,-1,157,161,203,-1,-1,-1,211,-1,-1,-1,-1,-1,-1,-1,-1,215" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Slope drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 1" category="Transmission - Shift Schedule" storageaddress="0x016976" storagetype="uint16" endian="big" sizex="2" sizey="4" cellIndices="0,4,14,18,28,32,42,46" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="2">
    <data>0.0</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="4">
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 1.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 2" category="Transmission - Shift Schedule" storageaddress="0x016794" storagetype="uint16" endian="big" sizex="9" sizey="5" cellIndices="0,4,8,12,16,20,24,28,32,37,-1,-1,-1,-1,-1,41,-1,45,255,-1,-1,-1,-1,-1,-1,-1,259,269,-1,-1,-1,-1,-1,-1,-1,273,283,-1,-1,-1,-1,-1,-1,-1,287" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="9">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>50.2</data>
    <data>62.7</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="5">
    <data>1-2 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 2.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 3" category="Transmission - Shift Schedule" storageaddress="0x016794" storagetype="uint16" endian="big" sizex="12" sizey="6" cellIndices="0,4,8,12,16,-1,20,-1,24,-1,28,32,50,54,58,62,66,-1,70,-1,74,-1,78,82,37,-1,-1,-1,-1,-1,-1,-1,41,-1,-1,45,87,-1,-1,-1,91,95,-1,99,-1,103,107,111,269,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,273,283,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,287" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="12">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="6">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 3.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, 4" category="Transmission - Shift Schedule" storageaddress="0x016794" storagetype="uint16" endian="big" sizex="14" sizey="7" cellIndices="0,4,8,12,-1,16,-1,20,-1,24,-1,28,-1,32,50,54,58,62,-1,66,-1,70,-1,74,-1,78,-1,82,116,120,124,128,-1,132,-1,136,-1,140,-1,144,-1,148,37,-1,-1,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,87,-1,-1,-1,-1,91,95,-1,99,-1,103,107,-1,111,153,-1,-1,-1,157,-1,165,-1,-1,-1,-1,-1,169,173,283,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,287" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="14">
    <data>0.0</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="7">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in Manual 4.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Shift Map - Sport#, D5" category="Transmission - Shift Schedule" storageaddress="0x016794" storagetype="uint16" endian="big" sizex="15" sizey="8" cellIndices="0,-1,4,8,12,-1,16,-1,20,-1,24,-1,28,-1,32,50,-1,54,58,62,-1,66,-1,70,-1,74,-1,78,-1,82,116,-1,120,124,128,-1,132,-1,136,-1,140,-1,144,-1,148,178,186,-1,-1,190,-1,-1,194,198,-1,202,-1,206,-1,210,37,-1,-1,-1,-1,-1,-1,-1,-1,-1,41,-1,-1,-1,45,87,-1,-1,-1,-1,-1,91,95,-1,99,-1,103,107,-1,111,153,-1,-1,-1,-1,157,-1,165,-1,-1,-1,-1,-1,169,173,215,-1,-1,-1,-1,223,-1,227,-1,-1,-1,-1,-1,-1,231" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Pedal %" sizex="15">
    <data>0.0</data>
    <data>6.3</data>
    <data>12.5</data>
    <data>18.8</data>
    <data>25.1</data>
    <data>31.4</data>
    <data>37.6</data>
    <data>43.9</data>
    <data>50.2</data>
    <data>56.5</data>
    <data>62.7</data>
    <data>69.0</data>
    <data>75.3</data>
    <data>87.8</data>
    <data>100.0</data>
   </table>
   <table type="Static Y Axis" name="Shift" sizey="8">
    <data>1-2 Up</data>
    <data>2-3 Up</data>
    <data>3-4 Up</data>
    <data>4-5 Up</data>
    <data>2-1 Down</data>
    <data>3-2 Down</data>
    <data>4-3 Down</data>
    <data>5-4 Down</data>
   </table>
   <description>THE SHIFT MAP. All eight shift points in one table, in the form a five-speed automatic is normally calibrated: vehicle speed against accelerator pedal angle, one row per shift event.

Read a cell as: this shift happens at this road speed when the pedal is at this position. Raise a value to delay the shift, lower it to bring the shift on earlier. The upshift rows come first, then the downshifts - the gap between an upshift and its matching downshift is the hysteresis that stops the transmission hunting between two gears, so move the pair together unless you specifically intend to change it.

Every value is vehicle speed in km/h, confirmed against the factory shift chart. The axis is accelerator opening angle, stored as 0-255 for 0-100%.

Cells showing '-' are not editable. They are pedal positions where that particular curve has no vertex in the ROM, so there is no byte to change. Each curve is stored as its own polyline with its own breakpoints; this table lines them up on the shared pedal axis and leaves a gap where a curve does not use a position, rather than inventing a value.

Requires the patched RomRaider in romraider-5eat/. The eight curves sit at eight separate addresses with different lengths, which upstream cannot express as one table - see Table3D.cellIndices.

The schedule used in Sport# drive mode with the lever in P, N, D or Manual 5.

The firmware picks a schedule by index:

    drive mode x 50  +  shift lever x 10  +  gear x 2

Drive modes are Normal, Sport#, Slope, Manual, Kickdown, ATF Temp Low, I-Mode and three not yet identified. Lever positions are D and Manual 5 together, then Manual 4, 3, 2 and 1.

Schedules share curves - a table used in D is often the same object used in Manual 5 - so editing one map can change another. Check the addresses if that matters.

The formula, the drive mode mapping and this naming are rimwall's, from the RomRaider forum thread; FINDINGS section 51 verifies them against the code.</description>
  </table>

  <table type="3D" name="Downshift 2-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0123E6" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 2-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0123E8" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 2-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012428" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01242A" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 3-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124EE" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 3-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124F0" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 3-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x01246A" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01246C" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012530" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012532" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 4-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0125B4" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 4-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0125B6" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 4-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-1 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0124AC" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-1 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0124AE" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-1. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-2 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012572" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-2 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x012574" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-2. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-3 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x0125F6" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-3 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x0125F8" storagetype="uint16" endian="big" sizex="1" sizey="16" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="16">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-3. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift 5-4 Pressure - km/h" category="Transmission - Downshift Pressure" storageaddress="0x012638" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="km/h" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="5" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>km/h</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Downshift 5-4 Pressure - kPa" category="Transmission - Downshift Pressure" storageaddress="0x01263A" storagetype="uint16" endian="big" sizex="1" sizey="14" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="14">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
   </table>
   <description>DOWNSHIFT PRESSURE TARGET, 5-4. The pressure commanded during this particular downshift, against vehicle speed.

Pressure is in kPa on the scale confirmed against the factory manual - these maps reach 1372 kPa, which is the manual's figure for full throttle in D.

Raising a value makes this downshift firmer and faster; lowering it makes it softer and slower, at the cost of more clutch slip during the change. Pair it with the ramp step and duration tables in this category, which control how quickly the pressure is allowed to get there.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Downshift Ramp Step" category="Transmission - Downshift Pressure" storageaddress="0x012674" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="kPa (pressure step)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="kPa" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE RAMP STEP, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

Once the hold period expires, the commanded pressure moves from where it started toward the target by this much. A large value - 32767 appears in the stock calibration for most entries - means effectively no limit, so the pressure goes straight to target. A small value makes the application gradual, which is what the factory calls smooth control.

This is the knob for downshift harshness. Smaller steps are softer and slower.</description>
  </table>

  <table type="3D" name="Downshift Ramp Hold" category="Transmission - Downshift Pressure" storageaddress="0x012676" storagetype="uint16" endian="big" sizex="1" sizey="10" skipCells="1" userlevel="1">
   <scaling units="loop counts (period not established)" expression="x" to_byte="x" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="ticks" sizex="1">
    <data>ticks</data>
   </table>
   <table type="Static Y Axis" name="Downshift" sizey="10">
    <data>2-1</data>
    <data>3-1</data>
    <data>3-2</data>
    <data>4-1</data>
    <data>4-2</data>
    <data>4-3</data>
    <data>5-1</data>
    <data>5-2</data>
    <data>5-3</data>
    <data>5-4</data>
   </table>
   <description>DOWNSHIFT PRESSURE HOLD DURATION, one entry per downshift in the order 2-1, 3-1, 3-2, 4-1, 4-2, 4-3, 5-1, 5-2, 5-3, 5-4.

How long the pressure is held at its floor before the ramp starts. The value is a count of controller loops. The loop period has NOT been established, so this is left as a raw count rather than converted to milliseconds - a time unit derived from a guessed task rate would look authoritative and be wrong.

Larger values delay the pressure rise, which softens the initial engagement.</description>
  </table>

  <table type="3D" name="Line Pressure Target 1 - Nm" category="Transmission - Line Pressure" storageaddress="0x0126C4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 1 - kPa" category="Transmission - Line Pressure" storageaddress="0x0126C6" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 2 - Nm" category="Transmission - Line Pressure" storageaddress="0x012726" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 2 - kPa" category="Transmission - Line Pressure" storageaddress="0x012728" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 3 - Nm" category="Transmission - Line Pressure" storageaddress="0x012788" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 3 - kPa" category="Transmission - Line Pressure" storageaddress="0x01278A" storagetype="uint16" endian="big" sizex="1" sizey="26" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="26">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
    <data>13a</data>
    <data>13b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 4 - Nm" category="Transmission - Line Pressure" storageaddress="0x0127F2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 4 - kPa" category="Transmission - Line Pressure" storageaddress="0x0127F4" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 5 - Nm" category="Transmission - Line Pressure" storageaddress="0x012854" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 5 - kPa" category="Transmission - Line Pressure" storageaddress="0x012856" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 6 - Nm" category="Transmission - Line Pressure" storageaddress="0x0128B6" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 6 - kPa" category="Transmission - Line Pressure" storageaddress="0x0128B8" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 7 - Nm" category="Transmission - Line Pressure" storageaddress="0x012918" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 7 - kPa" category="Transmission - Line Pressure" storageaddress="0x01291A" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 8 - Nm" category="Transmission - Line Pressure" storageaddress="0x0129D0" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 8 - kPa" category="Transmission - Line Pressure" storageaddress="0x0129D2" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="3D" name="Line Pressure Target 9 - Nm" category="Transmission - Line Pressure" storageaddress="0x012A32" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="Nm (engine torque)" expression="x/10" to_byte="x*10" format="0" fineincrement="1" coarseincrement="10" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>Nm</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>
  <table type="3D" name="Line Pressure Target 9 - kPa" category="Transmission - Line Pressure" storageaddress="0x012A34" storagetype="uint16" endian="big" sizex="1" sizey="24" skipCells="1" userlevel="1">
   <scaling units="kPa (line pressure)" expression="x/10" to_byte="x*10" format="0" fineincrement="5" coarseincrement="50" />
   <table type="Static X Axis" name="Field" sizex="1">
    <data>kPa</data>
   </table>
   <table type="Static Y Axis" name="Vertex" sizey="24">
    <data>1a</data>
    <data>1b</data>
    <data>2a</data>
    <data>2b</data>
    <data>3a</data>
    <data>3b</data>
    <data>4a</data>
    <data>4b</data>
    <data>5a</data>
    <data>5b</data>
    <data>6a</data>
    <data>6b</data>
    <data>7a</data>
    <data>7b</data>
    <data>8a</data>
    <data>8b</data>
    <data>9a</data>
    <data>9b</data>
    <data>10a</data>
    <data>10b</data>
    <data>11a</data>
    <data>11b</data>
    <data>12a</data>
    <data>12b</data>
   </table>
   <description>LINE PRESSURE TARGET. Engine torque in, commanded line pressure out. This is what the pressure control solenoid is driven to achieve.

The torque axis is the engine torque the ECU reports on CAN 0x412, after the TCU has multiplied it by the Torque Converter Slip Pressure Factor, smoothed it, and multiplied it again by the ATF temperature factor. So the axis is effective torque, not raw crank torque.

Both units are confirmed against outside sources rather than inferred. The torque axis comes from the community CAN decoding of 0x412 bytes 3-4. The pressure axis reproduces the two figures in the factory manual's line pressure test: about 524 kPa at low torque against a specified 490 nominal (385-555 band), and 1372 kPa at 400 Nm against a specified 1370 at full throttle in D.

RAISING THESE RAISES CLAMPING FORCE. Firmer, faster shifts and more clutch holding capacity, at the cost of harsher engagement, more pump load and more heat. Several maps exist and the TCU selects between them by operating state - which state picks which map has NOT been established, so change them as a set unless you have logged which one is active.

This table holds ONE of the two quantities in the record array, so it can be shown in real units. Rows are the polyline vertices in order: 1a is the start of segment 1, 1b its end, 2a the start of segment 2, and so on. A segment's end normally equals the next segment's start; where it does not, the curve steps vertically at that point, which is deliberate. The companion table in the same category holds the other quantity, row for row.</description>
  </table>

  <table type="Switch" name="P0705" category="Transmission - Diagnostic Codes" storageaddress="0x01D778" sizey="2" userlevel="1">
   <description>P0705 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D778 as 0x0705. The code is the P-number in hex, so this reads as P0705.</description>
   <state name="Enabled" data="07 05" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0712" category="Transmission - Diagnostic Codes" storageaddress="0x01D7CE" sizey="2" userlevel="1">
   <description>P0712 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7CE as 0x0712. The code is the P-number in hex, so this reads as P0712.</description>
   <state name="Enabled" data="07 12" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0713" category="Transmission - Diagnostic Codes" storageaddress="0x01D7CC" sizey="2" userlevel="1">
   <description>P0713 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7CC as 0x0713. The code is the P-number in hex, so this reads as P0713.</description>
   <state name="Enabled" data="07 13" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0715" category="Transmission - Diagnostic Codes" storageaddress="0x01D7A8" sizey="2" userlevel="1">
   <description>P0715 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7A8 as 0x0715. The code is the P-number in hex, so this reads as P0715.</description>
   <state name="Enabled" data="07 15" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0719" category="Transmission - Diagnostic Codes" storageaddress="0x01D7CA" sizey="2" userlevel="1">
   <description>P0719 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7CA as 0x0719. The code is the P-number in hex, so this reads as P0719.</description>
   <state name="Enabled" data="07 19" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0720" category="Transmission - Diagnostic Codes" storageaddress="0x01D770" sizey="2" userlevel="1">
   <description>P0720 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D770 as 0x0720. The code is the P-number in hex, so this reads as P0720.</description>
   <state name="Enabled" data="07 20" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0724" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C8" sizey="2" userlevel="1">
   <description>P0724 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C8 as 0x0724. The code is the P-number in hex, so this reads as P0724.</description>
   <state name="Enabled" data="07 24" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0725" category="Transmission - Diagnostic Codes" storageaddress="0x01D772" sizey="2" userlevel="1">
   <description>P0725 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D772 as 0x0725. The code is the P-number in hex, so this reads as P0725.</description>
   <state name="Enabled" data="07 25" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0731" category="Transmission - Diagnostic Codes" storageaddress="0x01D78A" sizey="2" userlevel="1">
   <description>P0731 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78A as 0x0731. The code is the P-number in hex, so this reads as P0731.</description>
   <state name="Enabled" data="07 31" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0732" category="Transmission - Diagnostic Codes" storageaddress="0x01D78C" sizey="2" userlevel="1">
   <description>P0732 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78C as 0x0732. The code is the P-number in hex, so this reads as P0732.</description>
   <state name="Enabled" data="07 32" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0733" category="Transmission - Diagnostic Codes" storageaddress="0x01D78E" sizey="2" userlevel="1">
   <description>P0733 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D78E as 0x0733. The code is the P-number in hex, so this reads as P0733.</description>
   <state name="Enabled" data="07 33" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0734" category="Transmission - Diagnostic Codes" storageaddress="0x01D790" sizey="2" userlevel="1">
   <description>P0734 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D790 as 0x0734. The code is the P-number in hex, so this reads as P0734.</description>
   <state name="Enabled" data="07 34" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0735" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E6" sizey="2" userlevel="1">
   <description>P0735 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E6 as 0x0735. The code is the P-number in hex, so this reads as P0735.</description>
   <state name="Enabled" data="07 35" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0736" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C6" sizey="2" userlevel="1">
   <description>P0736 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C6 as 0x0736. The code is the P-number in hex, so this reads as P0736.</description>
   <state name="Enabled" data="07 36" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0741" category="Transmission - Diagnostic Codes" storageaddress="0x01D77E" sizey="2" userlevel="1">
   <description>P0741 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D77E as 0x0741. The code is the P-number in hex, so this reads as P0741.</description>
   <state name="Enabled" data="07 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0743" category="Transmission - Diagnostic Codes" storageaddress="0x01D788" sizey="2" userlevel="1">
   <description>P0743 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D788 as 0x0743. The code is the P-number in hex, so this reads as P0743.</description>
   <state name="Enabled" data="07 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0748" category="Transmission - Diagnostic Codes" storageaddress="0x01D786" sizey="2" userlevel="1">
   <description>P0748 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D786 as 0x0748. The code is the P-number in hex, so this reads as P0748.</description>
   <state name="Enabled" data="07 48" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0751" category="Transmission - Diagnostic Codes" storageaddress="0x01D80A" sizey="2" userlevel="1">
   <description>P0751 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D80A as 0x0751. The code is the P-number in hex, so this reads as P0751.</description>
   <state name="Enabled" data="07 51" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0753" category="Transmission - Diagnostic Codes" storageaddress="0x01D780" sizey="2" userlevel="1">
   <description>P0753 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D780 as 0x0753. The code is the P-number in hex, so this reads as P0753.</description>
   <state name="Enabled" data="07 53" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0756" category="Transmission - Diagnostic Codes" storageaddress="0x01D808" sizey="2" userlevel="1">
   <description>P0756 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D808 as 0x0756. The code is the P-number in hex, so this reads as P0756.</description>
   <state name="Enabled" data="07 56" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0758" category="Transmission - Diagnostic Codes" storageaddress="0x01D782" sizey="2" userlevel="1">
   <description>P0758 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D782 as 0x0758. The code is the P-number in hex, so this reads as P0758.</description>
   <state name="Enabled" data="07 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0761" category="Transmission - Diagnostic Codes" storageaddress="0x01D806" sizey="2" userlevel="1">
   <description>P0761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D806 as 0x0761. The code is the P-number in hex, so this reads as P0761.</description>
   <state name="Enabled" data="07 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0763" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C4" sizey="2" userlevel="1">
   <description>P0763 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C4 as 0x0763. The code is the P-number in hex, so this reads as P0763.</description>
   <state name="Enabled" data="07 63" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0766" category="Transmission - Diagnostic Codes" storageaddress="0x01D804" sizey="2" userlevel="1">
   <description>P0766 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D804 as 0x0766. The code is the P-number in hex, so this reads as P0766.</description>
   <state name="Enabled" data="07 66" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0768" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C2" sizey="2" userlevel="1">
   <description>P0768 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C2 as 0x0768. The code is the P-number in hex, so this reads as P0768.</description>
   <state name="Enabled" data="07 68" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0771" category="Transmission - Diagnostic Codes" storageaddress="0x01D802" sizey="2" userlevel="1">
   <description>P0771 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D802 as 0x0771. The code is the P-number in hex, so this reads as P0771.</description>
   <state name="Enabled" data="07 71" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0773" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E4" sizey="2" userlevel="1">
   <description>P0773 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E4 as 0x0773. The code is the P-number in hex, so this reads as P0773.</description>
   <state name="Enabled" data="07 73" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0801" category="Transmission - Diagnostic Codes" storageaddress="0x01D7C0" sizey="2" userlevel="1">
   <description>P0801 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7C0 as 0x0801. The code is the P-number in hex, so this reads as P0801.</description>
   <state name="Enabled" data="08 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0817" category="Transmission - Diagnostic Codes" storageaddress="0x01D82C" sizey="2" userlevel="1">
   <description>P0817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D82C as 0x0817. The code is the P-number in hex, so this reads as P0817.</description>
   <state name="Enabled" data="08 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0880" category="Transmission - Diagnostic Codes" storageaddress="0x01D82A" sizey="2" userlevel="1">
   <description>P0880 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D82A as 0x0880. The code is the P-number in hex, so this reads as P0880.</description>
   <state name="Enabled" data="08 80" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0882" category="Transmission - Diagnostic Codes" storageaddress="0x01D828" sizey="2" userlevel="1">
   <description>P0882 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D828 as 0x0882. The code is the P-number in hex, so this reads as P0882.</description>
   <state name="Enabled" data="08 82" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0883" category="Transmission - Diagnostic Codes" storageaddress="0x01D826" sizey="2" userlevel="1">
   <description>P0883 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D826 as 0x0883. The code is the P-number in hex, so this reads as P0883.</description>
   <state name="Enabled" data="08 83" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0955" category="Transmission - Diagnostic Codes" storageaddress="0x01D824" sizey="2" userlevel="1">
   <description>P0955 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D824 as 0x0955. The code is the P-number in hex, so this reads as P0955.</description>
   <state name="Enabled" data="09 55" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0957" category="Transmission - Diagnostic Codes" storageaddress="0x01D822" sizey="2" userlevel="1">
   <description>P0957 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D822 as 0x0957. The code is the P-number in hex, so this reads as P0957.</description>
   <state name="Enabled" data="09 57" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P0958" category="Transmission - Diagnostic Codes" storageaddress="0x01D820" sizey="2" userlevel="1">
   <description>P0958 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D820 as 0x0958. The code is the P-number in hex, so this reads as P0958.</description>
   <state name="Enabled" data="09 58" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1601" category="Transmission - Diagnostic Codes" storageaddress="0x01D82E" sizey="2" userlevel="1">
   <description>P1601 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D82E as 0x1601. The code is the P-number in hex, so this reads as P1601.</description>
   <state name="Enabled" data="16 01" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1706" category="Transmission - Diagnostic Codes" storageaddress="0x01D784" sizey="2" userlevel="1">
   <description>P1706 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D784 as 0x1706. The code is the P-number in hex, so this reads as P1706.</description>
   <state name="Enabled" data="17 06" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1707" category="Transmission - Diagnostic Codes" storageaddress="0x01D792" sizey="2" userlevel="1">
   <description>P1707 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D792 as 0x1707. The code is the P-number in hex, so this reads as P1707.</description>
   <state name="Enabled" data="17 07" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1710" category="Transmission - Diagnostic Codes" storageaddress="0x01D7F0" sizey="2" userlevel="1">
   <description>P1710 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7F0 as 0x1710. The code is the P-number in hex, so this reads as P1710.</description>
   <state name="Enabled" data="17 10" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1716" category="Transmission - Diagnostic Codes" storageaddress="0x01D7F4" sizey="2" userlevel="1">
   <description>P1716 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7F4 as 0x1716. The code is the P-number in hex, so this reads as P1716.</description>
   <state name="Enabled" data="17 16" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1717" category="Transmission - Diagnostic Codes" storageaddress="0x01D7F2" sizey="2" userlevel="1">
   <description>P1717 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7F2 as 0x1717. The code is the P-number in hex, so this reads as P1717.</description>
   <state name="Enabled" data="17 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1718" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D8" sizey="2" userlevel="1">
   <description>P1718 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D8 as 0x1718. The code is the P-number in hex, so this reads as P1718.</description>
   <state name="Enabled" data="17 18" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1760" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D6" sizey="2" userlevel="1">
   <description>P1760 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D6 as 0x1760. The code is the P-number in hex, so this reads as P1760.</description>
   <state name="Enabled" data="17 60" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1761" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D4" sizey="2" userlevel="1">
   <description>P1761 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D4 as 0x1761. The code is the P-number in hex, so this reads as P1761.</description>
   <state name="Enabled" data="17 61" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1762" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D2" sizey="2" userlevel="1">
   <description>P1762 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D2 as 0x1762. The code is the P-number in hex, so this reads as P1762.</description>
   <state name="Enabled" data="17 62" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1798" category="Transmission - Diagnostic Codes" storageaddress="0x01D7EA" sizey="2" userlevel="1">
   <description>P1798 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7EA as 0x1798. The code is the P-number in hex, so this reads as P1798.</description>
   <state name="Enabled" data="17 98" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1799" category="Transmission - Diagnostic Codes" storageaddress="0x01D7E8" sizey="2" userlevel="1">
   <description>P1799 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7E8 as 0x1799. The code is the P-number in hex, so this reads as P1799.</description>
   <state name="Enabled" data="17 99" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1817" category="Transmission - Diagnostic Codes" storageaddress="0x01D7D0" sizey="2" userlevel="1">
   <description>P1817 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D7D0 as 0x1817. The code is the P-number in hex, so this reads as P1817.</description>
   <state name="Enabled" data="18 17" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1840" category="Transmission - Diagnostic Codes" storageaddress="0x01D818" sizey="2" userlevel="1">
   <description>P1840 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D818 as 0x1840. The code is the P-number in hex, so this reads as P1840.</description>
   <state name="Enabled" data="18 40" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1841" category="Transmission - Diagnostic Codes" storageaddress="0x01D816" sizey="2" userlevel="1">
   <description>P1841 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D816 as 0x1841. The code is the P-number in hex, so this reads as P1841.</description>
   <state name="Enabled" data="18 41" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1842" category="Transmission - Diagnostic Codes" storageaddress="0x01D814" sizey="2" userlevel="1">
   <description>P1842 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D814 as 0x1842. The code is the P-number in hex, so this reads as P1842.</description>
   <state name="Enabled" data="18 42" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1843" category="Transmission - Diagnostic Codes" storageaddress="0x01D812" sizey="2" userlevel="1">
   <description>P1843 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D812 as 0x1843. The code is the P-number in hex, so this reads as P1843.</description>
   <state name="Enabled" data="18 43" />
   <state name="Disabled" data="00 00" />
  </table>

  <table type="Switch" name="P1844" category="Transmission - Diagnostic Codes" storageaddress="0x01D810" sizey="2" userlevel="1">
   <description>P1844 - stock code word (Enabled) vs a zero word (Disabled-style).

DISABLED writes 0x0000 to this code's slot, making it identical to the many slots the factory leaves empty. This is NOT a proven fault or report disable. The firmware does not test this code word for nonzero before selecting or reporting a fault, so detection, failsafe, persistence and code selection can all remain active, and whether a scan tool still reports the fault with a zero word is unverified. Treat it as an experimental code-word replacement, not a DTC-disable control.

Even in the best case it would suppress the CODE, not the FAULT - whatever limp-home, pressure or shift behaviour the TCU applies when that bit sets will still happen. Useful only after a hardware change that leaves a sensor permanently faulted; a poor idea for silencing a fault you have not diagnosed.

This is inferred from the table layout and confirmed against the firmware's report path (which does not gate on a nonzero word); it is not tested on a vehicle. Note the code you removed before you remove it.

Stored at 0x01D810 as 0x1844. The code is the P-number in hex, so this reads as P1844.</description>
   <state name="Enabled" data="18 44" />
   <state name="Disabled" data="00 00" />
  </table>

 </rom>

</roms>
