Skip to content

An editor's save changes bytes nobody edited (fixed point through floats) ​

Symptoms ​

A file saved from the decoded view differs from the original in fields that were not edited, usually in the last bits of positions far from the origin.

Cause ​

The game stores positions as 16.16 fixed point; the viewer holds them as 32-bit floats, which keep 24 bits. POD's tracks reach about 2,000 units, which needs 27 bits plus a sign, so a float cannot hold every stored value (inferred from the ranges; the editor was written to avoid it).

What to do ​

Never write fields back from the float view. Record each field's offset when reading; an edit adds a rounded fixed-point delta to the stored integer and writes it at that offset. Untouched fields keep their bytes. Test that a save with no edits is the original on every file.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.