Document external MFD and radar mapping work
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user