Road Editor Tool - krcenov/RNS510-Map-Viewer GitHub Wiki
Road Editor Tool
rns510_gui.py is the actual map-EDITING tool — distinct from the
read-only Map Viewer Tool, which exists purely to
visualize and validate the file-format findings this wiki documents.
This is the tool that writes real changes back into a real ISO.
Location: rns510_gui.py (GUI), rns510_core.py (all format/business
logic, no GUI code), rns510_iso.py (ISO read/write helper, shared
with the viewer — see ISO Container Handling),
test_core.py (non-GUI functional test).
Run with py rns510_gui.py (on this machine, use the py launcher —
plain python/python3 aren't on PATH).
Features
- Open Map ISO — loads via
rns510_iso.py, extracts justdb/eeu.rd,db/eeu.il,db/eeu.iofto local temp files (never holds the full multi-GB ISO in memory). - Search roads by name — scans
eeu.il's name index. - Edit an existing road — change name and/or nudge coordinates;
patches the
eeu.rdrecord in place, preserving all unresolved bytes unchanged. Best-effort keeps.ilin sync. - Add a new road — form for name + lat/lon; appends a new
.rdrecord (unknown bytes zero-filled), a best-effort.ilentry, and a default.iofentry. Marked EXPERIMENTAL in the UI with a warning and confirmation dialog — it does not touch.rt/.rl, city/ county tables, or the.mg1-.mg4rendering tiles, so a new road may be searchable in-tool but not necessarily visible or routable on real hardware (see "What's solid vs. experimental" below). - Save As new ISO — never overwrites the original; writes edits
back via
rns510_iso.py, then automatically reopens the new file and verifies the edits read back byte-exact before reporting success.
Tested against the real CD_8555.ISO (not just written and
assumed to work): search returned real matches, an existing road was
renamed and the change verified, a new test road was appended and
verified, and a full save-as + round-trip readback passed, including a
full 1,535-file diff confirming everything untouched matches the
original exactly.
What's solid vs. experimental (read this before editing your real map)
| Capability | Status |
|---|---|
| Open/parse the map ISO | Solid, verified |
| Search roads by name | Solid, verified |
| Rename an existing road / move its coordinates | Solid, verified — preserves all unknown fields |
| Add a brand-new road (data-only) | Works, but experimental — see below |
| New road appears in name search | Works |
| New road renders on the map display | Not yet tested on real hardware — tile geometry format (per-feature anchor+delta blocks, Tile Geometry and Topology) is readable/writable, and the per-vertex topology/adjacency table's node-id mapping is now also cracked (resolve_topology_adjacency()), so a topology entry consistent with a new road's own vertices can be synthesized in principle — whether real hardware actually needs one, and whether this understanding is complete enough to satisfy it, is unverified; nothing has been write-tested on-device |
| New road is routable | Unverified — .rt/.rl/city-county wiring not done; .rl/.prl are decoded (Name Search Catalog) but not yet used by this tool, and may back the unit's own address-search UI (unconfirmed) |
| Rebuild a valid ISO | Solid, verified byte-for-byte |
| Prepare SD card from the ISO | Solid — via the separate maps-tool (see ISO Container Handling) |
| Real hardware acceptance | Not yet tested — recommended next real-world step is a zero-edit round-trip test (rebuild the ISO unmodified, deploy via maps-tool, confirm the unit loads it normally) before trusting any real edits |
Non-GUI functional test: test_core.py.