Skip to content

The Map of Iberia

Vengeance of Excalibur’s strategic map: a 123×101 tile grid (1968×1616 pixels at the game’s native 16px tile size), decoded from the MMAP/IMAG #500 resources in INTF32.RES and pre-composited into the image below by tools/vengeance/render-map.ts. The coastline this renders is instantly recognisable as the Iberian Peninsula — the game’s map covers Spain and Portugal, matching its story (a re-imagined Reconquista-era Spain laced with Arthurian and Arabian Nights elements).

Vengeance of Excalibur strategic map (overview)

44 named locations. Hover or focus a marker for its name; search to highlight matches.

Want to see one of these locations up close, composited the same way the offline asset viewer’s SceneViewer tab builds it? The Scene Viewer Gallery shows six named locations as full landscape-plus-object composites — an enhancement over the original game, which never had a “click a map location, see a close-up” feature of its own (unlike War in Middle Earth).

Every one of the 12,423 tiles on the map is a single byte: a direct index into a 256-tile atlas (IMAG #500, 256×256px, 5 bitplanes) — no nibble-packed row/column split the way Spirit of Excalibur’s map uses (see docs/vengeance/amiga/gameplay-data.md and tools/shared/build-map.ts’s shared buildGameMap, which supports both encodings). The 123×101 grid dimensions themselves took some work to pin down: the decompressed MMAP buffer’s size (12,423 bytes) only factors as 3×4141, 41×303, or 101×123 — naive auto-detection picked the transposed 101×123, which sheared the whole map into diagonal stripes one tile short per row. 123×101 is the orientation that renders a real, recognisable coastline.

vengeance-game-data.json’s locations table has 74 entries shared across all seven episodes/scenarios. 44 of them carry real map-pixel coordinates and are shown as markers above — real Iberian place names (Almeria, Barcelona, Zaragoza, Zamora…) alongside a few fantastical ones drawn from the game’s Arthurian/Arabian Nights plot (City of Brass, Well of Souls). The other 30 (mostly generic “Cave001”-“Cave020”, “Tavern01”/“Tavern02”, “mrchnt01”-“mrchnt03” instances, reused across multiple scenario sites) carry a 9999 sentinel x-coordinate rather than a real map position, since they’re not tied to one fixed spot the way the named towns are.

Full derivation and the exact table offsets live in docs/vengeance/amiga/gameplay-data.md in the main repo (not part of this site).