Skip to content

Road Editor Tool

Kristiyan edited this page Sep 30, 2026 · 1 revision

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 just db/eeu.rd, db/eeu.il, db/eeu.iof to 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.rd record in place, preserving all unresolved bytes unchanged. Best-effort keeps .il in sync.
  • Add a new road — form for name + lat/lon; appends a new .rd record (unknown bytes zero-filled), a best-effort .il entry, and a default .iof entry. Marked EXPERIMENTAL in the UI with a warning and confirmation dialog — it does not touch .rt/.rl, city/ county tables, or the .mg1-.mg4 rendering 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.

Clone this wiki locally