Document external MFD and radar mapping work

This commit is contained in:
2026-08-07 20:56:58 -05:00
parent deafc2b01b
commit 10301ee5dd
+66 -1
View File
@@ -52,7 +52,9 @@ Toolchain is late-90s/early-2000s **Visual C++ 6.0** — no git, no modern build
- **`Gameleap/`** — only **`mw4/`** is used (game-data source for resource packing). Former siblings
(editor docs, drivers, batch tools, runtime env) were historical/utility → moved to `_UNUSED\`.
- **`BTFrstrm/`** — FireStorm design data: mech stat workbooks (`MechInfo_5.04.xls`, `scriptaddmech.xls`).
- **`Finished HUDS from J&J/`** — per-mech HUD art (MFD + Radar) for ~15 'Mechs.
- **`Finished HUDS from J&J/`** — J&J external MFD/Radar source art, measurements, generated
comparison maps, and audit summary for 13 chassis. The usable mappings were installed on
2026-08-07; see `MFD-RADAR-MAPPINGS.md` and the STEP 13 note below.
### Inside `Gameleap\code/`
- `CoreTech/` — reusable engine layer (GameOS, gosFX, GOSScript, MLR renderer, Network, Stuff, Language, blade) + Tools.
@@ -1252,6 +1254,69 @@ consistency check explicitly printed *"No duplicate device assignments"*. The do
`HSH_EnterFullScreen2` was only visible because the log covers the whole start-up rather than a
summary. **Instrument, don't infer.**
## ✅ STEP 13: External MFD/Radar damage mappings installed + art audited (2026-08-07)
The coordinate and art workflow for the external MFD and Radar damage paper dolls is now fully
documented in **`MFD-RADAR-MAPPINGS.md`**. Start there; do not rediscover the image transforms,
tuple meanings, runtime offsets, legacy J&J formats, or BMP comparison rules from scratch.
### Controlling source and semantics
- `Gameleap\code\CoreTech\Libraries\GameOS\coord.cpp` owns four positional 65x11 arrays:
`texuv2`/`offset2` = external MFD source rectangles/exploded origins;
`texuv3`/`offset3` = Radar source rectangles/exploded origins. Numeric Mech ID (array row) is
authoritative; comments are labels. Zone order is `LL,RL,LA,RA,RT,LT,CT,CTR,HD,S1,S2`.
- These are NOT the normal cockpit HUD's `texuv`/`offset` arrays in `huddamage.cpp`, and NOT the
small atlas images under `hsh\MFD`.
- Runtime loose art is `Gameleap\mw4\hsh\hud\<stem>.bmp` for MFD and
`Gameleap\mw4\hsh\radar\hud\<stem>.bmp` for Radar. Coordinate changes require an MW4.exe
rebuild because `DXRasterizer.cpp` includes `coord.cpp`; loose art changes do not require a
`.mw4` resource repack.
### Installed mappings and reproducible audit (`97558039`)
- Added `Finished HUDS from J&J/generate_comparison_maps.py` (Pillow) plus 38 LFS-tracked review
PNGs and `COMPARISON-SUMMARY.md`. Red = current `coord.cpp`; green = supplied J&J geometry.
- Installed every complete supplied set: **19 displays across 13 chassis** (12 MFD + 7 Radar).
Final generator result: **19 exact, 0 different, 0 warnings, 7 missing opposite-display
inputs**. Missing inputs are Argus/Fafnir/Flea/Gladiator/Kodiak/Longbow Radar and Hellspawn MFD;
they were not guessed or changed.
- J&J data has two formats. Modern = 4-value unexploded source rectangle + 2-value exploded
origin. Legacy = 2-value source upper-left + 4-value exploded bounding box; derive source width/
height from that exploded box. Combined files use section headings. All-zero tuples may appear
at either width and mean "absent zone."
- Normalized four unambiguous input typos without changing reviewed geometry: Behemoth MFD LT
`1742→174`, Behemoth Radar CT `202.242→202,242`, blank Behemoth Radar S2 `→0,0`, and Fafnir MFD
LL `162.326→162,326`.
- Preserve validated odd coordinates rather than rounding them. Radar divides full-size authored
values by two using integer arithmetic, so rounding changes final placement.
### Behemoth II inheritance (`deafc2b0`)
- Behemoth II is Mech ID 12 and intentionally shares Behemoth ID 11's art and geometry. All four
ID 12 rows now exactly inherit ID 11. The generator asserts this relationship and fails on any
future divergence. There is **no Annihilator II** in the 65-ID roster; do not invent a row or
runtime stem for it.
### Runtime-art result: no copies needed
- Decoded every supplied exploded 512x512 BMP and compared pixels against its canonical `hsh`
destination. All 19 supplied display assets were already pixel-identical. File hashes differed
because BMP mode/palette/header encoding differed (`P`/`L`/`RGB`), which is not an art change;
no `hsh` file was replaced.
- Separately compared `hud\behemothii.bmp` and `radar\hud\behemothii.bmp` to Behemoth's runtime
files; both existing Behemoth II files were already pixel-identical 512x512 grayscale images.
- Compare decoded pixels before copying. The exploded BMP is the runtime asset; unexploded BMPs
and full-color images are authoring references. Resolve canonical stems rather than trusting
supplied names (`assian2_*` is a typo; runtime is `assassin2.bmp`; preserve existing `Fafnir.bmp`
case on Linux).
### Validation and remaining work
- Run: `python3 "Finished HUDS from J&J/generate_comparison_maps.py"`. Expected current output:
`Generated 38 maps for 19 display sets: 19 exact, 0 different` and
`Warnings: 0; missing display sets: 7`, followed by the Behemoth II inheritance assertion in
`COMPARISON-SUMMARY.md`.
- `coord.cpp` must remain CRLF-only and retain four 65-row arrays with 11 zones per row.
- **Still required:** rebuild Release/Profile on the Windows VC6 machine, deploy MW4.exe, and test
intact/damaged states on physical MFD and Radar displays. Linux validation proves source/data
equality and image alignment, not runtime hardware behavior.
## Next steps (proposed)
- [ ] (Parked, diagnostics-only, cannot affect a real pod) Two gaps found while testing `-tident`
on a **single-monitor VM** (2026-08-05). Both only occur when one physical monitor is exposed as