The four map tables against the realm's own files. One real bug, and three
findings that are the realm's data rather than ours.
**`WorldMapArea::continent` was a coin flip.** It `find`s the `area_id == 0`
row for a map id, and 5875 had exactly one per map so order never mattered. The
realm ships two for map 0 — 14 "Azeroth" and its own 694 "World" — and the
lookup iterated the `by_id` `HashMap`, whose order is seeded per process. So
`continent(0)` answered Azeroth or World depending on the run. Now it walks
file order, which is the reference's own walk and picks 1.12's row; the test
asserts 14 and passes eight runs in a row where it used to flip.
- **WorldMapArea** 51 -> 132 rows loaded, of 175 in the file. The 43 dropped are
dropped on purpose: `AreaName` empty, `AreaID` 0, the whole rect zero, one per
instance map (33 Shadowfang through 533 Naxxramas, then the realm's 800s). An
instance has no continent art — but `AreaID == 0` is exactly what
`ui_world_map.rs:146` reads as "this row is a continent", so keeping them
would put 43 unnamed continents in `GetMapContinents()`. `str_at` folds an
empty string to `None` and the row falls out; the test now pins that as
deliberate. The realm's third *named* continent is 694 "World", a second sheet
over map 0 whose art ships (patch-M) but whose four rect columns are all zero
— the only named row like that. `map_proj::zone_uv` already refuses a zero
span and answers 0.0 instead of dividing, so that sheet puts a blip in the
corner rather than NaN.
- **WorldMapContinent** 2 -> 3 rows. The new row's `MapID` is 42, which the same
patch *deleted* from `Map.dbc` along with the rest of 1.12's dev test maps
(13 "Testing", 25 "Scott Test", 29 "CashTest", 37 "Azshara Crater", 42
"Collin's Test", 44 "<unused> Monastery"). It is inert rather than broken: the
continent list comes from `WorldMapArea`, and this table is only ever reached
by `wmc.get(map_id)` for maps 0 and 1, so nothing asks for continent 42.
- **The zone bitmaps are repainted.** `Azeroth.zmp` and `Kalimdor.zmp` have the
realm's own copies in patch-3 and patch-4, and every id they write is a
**zone** where 1.12 wrote sub-areas and left the client to roll them up.
Azeroth: 1874 labelled cells over 34 distinct ids, all zone-level, against
2630 over 334 of which 310 were sub-areas (Northshire Valley, Crystal Lake,
Fargodeep Mine). After the one-hop rollup `ui_world_map.rs:193` applies, 1280
cells agree, 534 name a *different* zone, 816 lost a zone and 60 gained one —
a redrawn map, not a mechanical flattening. Nothing of ours needed changing:
the rollup is a no-op on an already-flat grid. The test asserts the structural
claim behind the number (every labelled cell is a top-level zone), which 1.12's
own file would fail, so a decode slip cannot hide inside a re-recorded count.
- **WorldMapOverlay** 526 -> 707, and not an extension: 360 ids added, 179
removed, 347 survivors given a different texture and rect. None of this
table's numbering is 1.12's, so only the joins are worth asserting.
`dbc_diff` gained `--row=N`, which dumps a row from the winning copy *and* the
baseline — the only way to read a row the realm deleted, which is how the six
test maps above got their names.
benilla-formats: 25 -> 21 failures, no regressions.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn