Docs › Reverse engineering

Finding & defining tables

A ROM with no definition is just bytes. These tools help you find the tables in it and write them down as a definition.

1. Start from what you have

  • The ROM Database on this site has reverse-engineered definition and dump files for Unisia Jecs, Hitachi and Denso ECUs. Look for your ROM first: ROM Database. The same page has a way to request definition work.
  • A similar ROM with a definition: another version of the same calibration. Use Compare ROMs › Port the definition to carry its definition over.

2. Find the tables

Open the ROM, go to the Hex editor and press Find tables. It looks for the shape of a table (axes followed by smooth cells) and lists hits by score. Also useful:

  • Structure shows which parts of the ROM look like code and which like calibration data, so you know where to look.
  • Show strings lists the text in the ROM: IDs, part numbers and copyright lines.
  • Find looks for hex bytes or text. Go to jumps to an address.

3. Name the table

Select the bytes and press Add to definition…. Give it a value type and byte order, its shape, a category and a scaling. For a ROM with no definition at all it first asks for the ROM id header and makes a new definition in your Custom definitions folder. The new table appears in the sidebar and as an outline in the dump.

4. Check your work

  • Open the table on the Calibration page. A real table looks smooth and the numbers make sense for what it should be (timing in degrees, fuel in air/fuel ratio and so on).
  • On the Definitions page, Check the definition against this ROM lists tables that run past the end of the ROM, sit over erased flash or have axes that turn round.
  • Use Bumps on a table to see cells that do not fit their neighbours.

5. Find out what the code does with it

To learn what a table is for, or to confirm a guess, use the Disassembler or ask the AI assistant to find the code that reads the table.

Datalogging helps

Driving with a datalog and tracing it on a table with Trace shows which tables the engine really uses, which is often the quickest way to learn what a table does.