From b1b81a6dc683f84c5539775c94d6611b605d3363 Mon Sep 17 00:00:00 2001 From: uhryniuk Date: Thu, 27 Aug 2026 01:41:04 -0500 Subject: [PATCH] Patch the flash checksum into the composed Arrow delete tunes The composed .hex files were missing a valid flash checksum entirely (checksum.py flagged MISMATCH on both) -- not flash-ready as committed. Patches the checksum in-place for both, and fixes compose_arrow_delete.py to patch it automatically on future regenerations instead of leaving it as a manual follow-up step. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01FP2GaxS9HkUdL5sLBnjKje --- .../reference-maps/compose_arrow_delete.py | 9 ++++++++- .../derived/20262-arrow-delete-composed.hex | Bin 299757 -> 299757 bytes .../derived/20313-arrow-delete-composed.hex | Bin 299757 -> 299757 bytes 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tunie/research/reference-maps/compose_arrow_delete.py b/tunie/research/reference-maps/compose_arrow_delete.py index 8a6eee8..eaabc8d 100644 --- a/tunie/research/reference-maps/compose_arrow_delete.py +++ b/tunie/research/reference-maps/compose_arrow_delete.py @@ -38,6 +38,7 @@ from __future__ import annotations import sys +import checksum from decode_map import decode, encode from toggle_devices import SAI, O2_1, O2_2, repack, unpack @@ -77,6 +78,11 @@ def compose(arrow_raw: bytes, stock_after_raw: bytes, delete_raw: bytes) -> tupl f" (byte {before} -> {after})" ) + before_sum = checksum.stored(bytes(arrow_rom)) + checksum.patch(arrow_rom) + after_sum = checksum.compute(bytes(arrow_rom)) + notes.append(f"checksum: stored {before_sum:04x} (stale) -> patched {after_sum:04x}") + repacked = repack(arrow_dec, bytes(arrow_rom), positions) out = encode(repacked) assert decode(out) == repacked, "round-trip failed" @@ -101,8 +107,9 @@ def main() -> int: for n in notes: print(" ", n) print(f"wrote {out_path} ({len(out)} bytes)") - print("NOTE: flash checksum not patched -- not known to be flashable as-is.") print("NOTE: main VE fuel-table overlap (~1340 bytes) still unresolved -- see COMMUNITY_TUNING.md.") + print("NOTE: only device flags + 2 idle-CO trim bytes are composed -- the main") + print(" running-range VE fuel tables are untouched stock-Arrow calibration.") return 0 diff --git a/tunie/research/reference-maps/derived/20262-arrow-delete-composed.hex b/tunie/research/reference-maps/derived/20262-arrow-delete-composed.hex index 2fcb37d9974662e12bdf0fc35033d68dd9520b0a..3574ce8b84db20b8e2db75fd476763fd4decd974 100644 GIT binary patch delta 28 kcmaF6ROszep@tU57N!>FEi8{Gamf_kKhv20rQiiW0J(q-4FCWD delta 28 kcmaF6ROszep@tU57N!>FEi8{GaRr;r=su>f*?heR0JG-|1poj5 diff --git a/tunie/research/reference-maps/derived/20313-arrow-delete-composed.hex b/tunie/research/reference-maps/derived/20313-arrow-delete-composed.hex index ab32fde65127e2b529347f900d1d736c76e6a42e..45caa702012ba740cb14437e654cd76c538bf32f 100644 GIT binary patch delta 28 kcmaF6ROszep@tU57N!>FEi8{GaosF`_<3K%Y5(g60K!xa?EnA( delta 28 kcmaF6ROszep@tU57N!>FEi8{GaZNB=u<5^K7vHo(0Jo(KVE_OC