RC2 build, verified to launch on the Windows box and copied back into the
deployment at MW4/. Supersedes RC1 (a0331e78), which predates everything in
sections 12-17 of the test checklist.
Binaries and content
--------------------
* MW4.exe / MW4pro.exe rebuilt from CoreTech GameOS + MW4Application. Carries
the display work that landed after the RC1 build: -tident, the full
gos-displays.txt start-up trace with the CLASH and CTCL-type reports, the
HSH_EnterFullScreen2 panel re-entry fix, the -tmr cameraship ladder, and the
updated -help text.
* Launcher / autoconfig / mw4print / ctcls / MissionLang / ScriptStrings
relinked in the same pass.
* props.mw4 + props.dep fully repacked (deleted first, not incremental), so the
23-entry time list, the restored 7-minute default and the V5.1.0b2 console
title are actually in the package rather than only in the source tree.
* mw4-help.txt regenerated from the new exe; the diff is the proof the built
binary carries the documentation changes.
Documentation, renamed to RC2
-----------------------------
* RELEASE-NOTES-5.1.0b_RC1.{md,html} -> ..._RC2.{md,html}, both hand-maintained
in step, ASCII + CRLF so they open correctly in Notepad on a pod.
- New "Already testing RC1?" block at the top. RC1's notes already described
-tident and the CLASH report, but the RC1 BINARY does not contain them, so
anyone comparing the two needed that stated explicitly.
- Time limits corrected to 23 entries (1-15, 20, 25, 30, 45, 60, 120, 180,
240) with the 7-minute default restoration called out.
- New section on the cameraship Map/Armor screen: background but no overlays
is -ctcltype 2 on a cameraship, not a video card. Includes the
"CTCL type =" log line and -tmr 3 as the follow-up check.
- -fps description corrected: the per-second column is a 5% low and the 1% /
0.1% lows are in the session summary. The old text described behaviour that
had already been changed.
- Switch table gained -tmr; known issues gained stereo-only audio and the
single-monitor -tident caveat; upgrade checklist now names V5.1.0b2.
* testing-checklist-5.1.0b1.txt -> testing-checklist-5.1.0b_RC2.txt, with a
build-requirements header and new sections 12-17 covering -tident, the
display trace (including a deliberate -tmon clash to exercise the CLASH
report), the panel re-entry fix, cameraship/-tmr, 240-minute missions and a
-help verification pass.
* OPTIONS-INI.md: TimeList_Index is documented as no longer driving the console
lobby default (the script uses a literal since the list was expanded) while
TimeList_Value remains live; added a table of the files the game writes next
to MW4.exe. Also repaired the CP949/CP1252 damage in that file - it carried
literal 0xA1 0xE6 arrows, 0x97 em dashes and ~20 '?' characters where dashes
had been lost. Now pure ASCII.
* README.md points at the RC2 notes.
Source
------
MW4Application.cpp help text: -fps now matches what gos-fps.txt actually
prints, and -ctcltype states that a cameraship must use 3 and what goes wrong
when it does not. Audited all 80 switches parsed in the file against the help
array - none missing, and no game-facing switch is parsed anywhere else.
Deployment housekeeping
-----------------------
* dgVoodoo.conf: ScalingMode = stretched_ar, which is the setting the release
notes require and which fails SILENTLY when wrong. FPSLimit was left at 20
from bench testing and would have shipped a 20 fps cap to every Win10/11 pod
- raised to 60.
* banner.txt reset from a test string to the shipped placeholder.
* Removed two stray screen000*.bmp captures and the duplicate dbstruct.txt
(db_schema.sql is the current name, per b4089291).
* .gitignore: gos-displays.txt and gos-fps.txt are truncated on every launch
and are per-machine, so they are no longer mirrored.
Not yet done: multi-monitor pod testing of this binary. -tident, the re-entry
fix and -tmr have not been exercised on real MFD hardware - that is what the
new checklist sections are for.
Co-authored-by: Claude Opus 5 (Anthropic) <noreply@anthropic.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
Research only. Nothing implemented, nothing scheduled. Captured now so the
investigation does not have to be repeated when we come back to it.
New file: WINDOWED-MODE.md (repo root), indexed from README.md and the
CLAUDE.md next-steps list.
Goal being assessed
-------------------
Make -window work for every pod configuration, so a full pod (main + radar
+ MFDs, or a cameraship pair) can be tested on a single monitor as a set
of moveable windows. Target order: console (already works), cameraship,
-tmfds 1, -tmfds 4. -tmfds 3 deliberately out of scope.
Headline finding
----------------
-window does NOT fail for the MFD and cameraship modes - it silently
DISABLES them, and the reason is a single line:
MW4Application.cpp:1373
use_shgui = Environment.fullScreen ? 1 : 0;
use_shgui is the master switch for the entire secondary-panel subsystem
and is derived from fullscreen, so with -window it is 0 and
DXRasterizer.cpp:1131 never calls HSH_EnterFullScreen2(). No panel is ever
created. Console mode only appears to work windowed because it has no
panels to lose.
What the document covers
------------------------
* Why it behaves the way it does today, with the exact gating code.
* What already exists in our favour: the main display is a working
windowed reference implementation (primary + clipper + offscreen
backbuffer, presented with Blt); the clipper wrappers are already in
use; and none of the panel DRAWING code would change, because panels
render to an offscreen target and composite - they are indifferent to
whether the present is a Flip or a Blt.
* The six things that must change, with quoted code: decouple use_shgui;
windowed variants of CHSH_Device::InitFirst (DDSCL_NORMAL, no
SetDisplayMode, per-panel HWND) and InitSecond (plain primary + clipper
+ offscreen backbuffer, D3D device on the offscreen); one window per
panel; 8 Flip->Blt sites in WinMain.cpp; and explicit frame pacing.
* Frame pacing is called out as the item that will actually bite: sh_step
advances once per frame and drives MFD channel cycling, so an uncapped
windowed rig would not faithfully represent pod behaviour. Same root
cause as the known mechlab fast-spin bug.
* Reference tables: every panel class with its InitFirst location, device
slot and resolution; the SwapRightState member-swap mechanism that any
windowed work must keep intact; and the full lifecycle/gating map.
* Suggested phasing, with radar-only as the decisive Phase 1 experiment.
The risk that decides it
------------------------
Windowed D3D7 device creation is per-GPU, and this would need four
windowed devices in one process. Precedent runs both ways: the mission
editor hit DDERR_INVALIDOBJECT creating a windowed D3D device on Win11 and
needed DDrawCompat (STEP 8), while the game's own windowed main display
succeeds on the W4100. Nothing has proven four. If it fails, the fallback
means rewriting the panel RENDER path, not just its present - a
substantially bigger job.
Why this may be worth more than a test convenience
--------------------------------------------------
Windowed mode removes exclusive-mode contention entirely, which is the
whole reason dgVoodoo2 is currently mandatory for every multi-display
configuration on Windows 10/11 (STEP 10). If windowed panels work
natively, that is a route to dropping the dgVoodoo2 prerequisite WITHOUT
breaking the XP pods, since it needs no external DLL on either OS. Same
groundwork as the borderless-windowed migration already parked in STEP 10.
Note on citations
-----------------
All 22 file:line references were derived directly and verified to resolve
to the expected symbol. An exploratory pass had produced line numbers that
were substantially wrong (CHSH_Device::InitFirst reported at 717, actually
627; IsMultimonitorAvaliable at 2178, actually 2961), and a claim that the
radar renders at 480x640 rotated - the code passes 640,480 like the
others. Worth knowing before trusting generated citations in a document
intended to outlive the session.
Co-authored-by: Claude Opus 5 (Anthropic) <noreply@anthropic.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
Add Background section covering what FireStorm is, the full VWE /
BattleTech Center history from ESP (1988) through Tesla II FireStorm
(2002) and community continuation, and a summary of V5.1.x changes
since the 5.07D official release.
Reorganize build instructions under a dedicated 'Building from source'
heading. Demote Outputs / Design / _UNUSED from top-level headings to
subsections under the layout section.
- ADDING-A-MECH.md: full workflow for adding a 'Mech chassis (MSL ADD MECH
touch points, positional Mech IDs, scriptaddmech.xls generator, hardpoints
in .damage, rebuild/repack/deploy steps)
- ADDING-A-MAP.md: full workflow for maps (MapCreator terrain) vs missions
(MW4Ed2-authored), .nfo MP registration, user vs stock routes, pitfalls
- CLAUDE.md: reference pointers to both new docs
- README.md: annotated folder map; warning to read RECOVERY.md before cloning
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.