Skip to content

History / MAP_COMPRESSED Container Format

Revisions

  • Correct the 'external field-reader' wall: it was wrong. 621 DBF* class symbols (DBFInteger/DBFIntegerSpecial/DBFBitComponent/...) are real, defined code in DBAL.OUT's own .text, not external -- the indirect vtable calls just render opaquely in Ghidra's pseudocode. Proven via .rela.text relocations against each class's _vt$ClassName symbol, resolving unpack_intersection_offset_rec's 3 field reads to real named functions. Found the actual generic integer codec (9 real encoding schemes) and the bit-field shift/mask logic. Not yet done: mapping each field name to its concrete DBF class (likely eeu.mod's own still-undecoded type-tag byte).

    @krcenov krcenov committed Oct 5, 2026
  • Resolve the k-d tree edge-scale 'proven wall': it was a 4-byte reader offset bug, found via eeu.mod's schema. Full tree traversal now reaches 100% of nodes/leaves; edge uses the disc-wide /100000-degree convention. Wire find_tile_for_coord_kdtree()/build_kdtree_bbox_index() into the viewer as the primary (structural, no-decompression) bbox source, with the cached content-decode path as fallback.

    @krcenov krcenov committed Oct 5, 2026
  • kd-tree edge calibration: trace query architecture (map_search/pcl_sect_cover/pcl_found), confirm db_upack_kd_sub/top_node/info hit the same external-schema wall as eeu.rd/eeu.iof, and prove via connected-component analysis that no tested byte layout reconstructs one tree

    @krcenov krcenov committed Oct 5, 2026
  • Document the geo-index disk cache: why the k-d tree wasn't swapped in yet, and the safe fix that was

    @krcenov krcenov committed Oct 5, 2026
  • Crack MAP_COMPRESSED's geo-index prefix: a real k-d tree, via DBAL.OUT disassembly Reconciles with (doesn't replace) the earlier R-tree symbols found in FHDD6.FLI -- likely 2 genuinely different subsystems. The actual on-disk structure in this region, confirmed via fully-resolvable DBAL.OUT code (db_kd_search, kd_pdecend/kd_rdecend, db_page_kd_subtree, db_upack_kd_top_node/sub_node), is a k-d tree: a 28-byte mapHeader (validated via an exact pcl_cnt match to the file's real tile count, plus an independent node-array-size prediction landing within 4 bytes of the real table_start) followed by interleaved 13-byte node records. kd_info's 7 bits and lo_index/hi_index's dual-purpose (node index vs. subtree cache-slot id) encoding are both traced directly from real code, not inferred. edge is confirmed to be the real split coordinate by tracing exactly where it's written during tree descent; its own numeric scale remains open. Preserves the earlier scan_native_geo_hints() findings as a separate, still-valid, not-yet-reconciled signal in the same byte region.

    @krcenov krcenov committed Oct 5, 2026
  • Add the Road Editor page, fix a stale status, and fill the geo-index gap New page: Road-Editor-Tool.md -- rns510_gui.py (the actual editing tool that writes real changes back to a real ISO) had zero dedicated wiki documentation; only ever mentioned in passing on other pages. Migrated README's own #6/#7: features, how to run it, and the "what's solid vs. experimental" table (critical reading before trusting any real edit). Fixed a real stale/wrong status label: MAP_COMPRESSED-Container- Format.md said the geo-index prefix was "not cracked" at all -- long out of date. It's actually architecture-identified (a real R-tree, confirmed via firmware disassembly: MDCacheTIRTree/findNode/ enlargeMBR/etc.) and ~42-46% byte-decoded via scan_native_geo_hints(), validated against build_bbox_index()'s own bounds on 2 independent files. Migrated the full story: the (tile_id, tile_id+1) finding, 4 refuted structural hypotheses, the confirmed max-corner-only semantics, and the wire-in-then-honest-revert into the live viewer (cross-linked to Map-Viewer-Tool.md's own changelog entry for that part). Also documented build_bbox_index()/find_tile_for_coord_bbox() (98% real-point resolution accuracy) as a 2nd practical workaround, previously unmentioned anywhere in the wiki. Enriched ISO-Container-Handling.md's SD-card section with the real region-code gate and the actual button-combo procedure (previously just pointed to README for these).

    @krcenov krcenov committed Sep 30, 2026
  • Add full file-format wiki: home status table + per-file detail pages Documents every file on the CD_8555 map disc (db/ folder): byte layouts, decode status (cracked/partially cracked/not examined), and validation evidence for each, distilled from the main repo's README research log. Covers the road graph (eeu.rd/.il/.iof/.typ), the road/city name-search catalogs (rt/rl/prl, cty/cl/ct, ctr), the MAP_COMPRESSED tile format (mp0/mg1-mg4) including tile geometry and the topology/adjacency table, the eeuz.fea gazetteer, the FLAT_COMPRESSED container, ISO handling, and a first-look triage of the 16 files never examined at all. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>

    kristian.cenov committed Sep 18, 2026