I think this would be better suited on gearhead-efi.com forum. Nice work
It is already. I decided to share with nefmoto users, since it is another great open source platform for DYI heads.
Great to see more open source tuning tools! Thanks for posting!
For those curious about what it actually does:
I read the source and it looks like the tool uses a variety of XML definition files and some currently GM-specific hard-coded opcode skeleton cross-correlation to locate segments and tables, and then has a map editor and an XDF generator built in as well.
While everything looks very GM specific, I think the conceptual approach is very similar to the older version of 360Trev's ME7 Swiss Army Knife
https://github.com/360trev/ME7RomTool_Ferrari/ , before he added the actual opcode disassembler. Basically, look for known opcode sequences for specific map and table lookups, and then extract the address xrefs from inside of those functions to locate the maps and tables themselves.
You are almost correct, unless that there is almost nothing GM hardcoded[some specific checksums of one type of files] and almost everything is user configurable.
The tableseek-xxxx.xml have the search strings patterns that find the tables addresses and offsets.
Not sure where I got inspirations for this. Maybe repeatable compilers patterns found in the disassemblies of different revisions. Maybe some net ideas. Who knows - might have stumbled upon swiss knife that tool at some point.
There is some example in the xml folder.
For example if this search string is unique in any revision you are working with
20 70 05 b0 @ @ @ @ 30 38 * * * * * * * * * * * * c0 f8 +D12
It can take an indexed lookup address.
@@@@ is the address of the lookup table`s addresses.
+D12 is the offset from @@@@ where the final addresses is read.
You can even find double or triple indexed stuff for example +d12 +156 and so on.
For research of unknown multiple tables, there is tablesearch-xxx.xml It will find all tables with the same table lookup opcodes, but you have to figure which one does what.
This is for the very advanced users so I can bring some basic stuff first, how it works.
The autodetect.xml contains rules or some specfic identifiers of the bin file, so it can be easily identified as a type upon opening.
The checksum xml files[open from settings->edit config(xml)] can set complex multiple checksums, where start-end addresses can be taken from bin if hardcoded in the file, or searched, or you can just hardcode them, add offsets and so on.
Also in that xml file you configure how to take p/ns or other stored data as engine identifiers, Vin numbers and anything that is stored at specific address in ascii, integer or hex.
If a file have a p/n stored that can be retrieved when the file is opened, you can set some CVN calculation to check if the file have been altered or is completely stock. Just add the entry in CVN list.
As for the Tuner part. it can work with anything you throw at as long as you have a definition xml, or some xdf can be imported too.