Publish V5.1.0b_RC2: rebuilt binaries, repacked props, RC2 documentation

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>
This commit is contained in:
2026-08-07 13:07:43 -05:00
co-authored by Claude Opus 5 GitHub Copilot
parent 9bf49a8084
commit 8bfaf9b9ad
24 changed files with 466 additions and 184 deletions
+4
View File
@@ -15,3 +15,7 @@ FS507D_20161015/
# player-created mechlab variants in the game deploy (local test/play data, per-machine)
MW4/Resource/Variants/
# GameOS run-time reports: rewritten on every launch, per-machine
MW4/gos-displays.txt
MW4/gos-fps.txt
@@ -937,6 +937,11 @@ static const char* const g_apszCommandLineHelp[] =
" -ctcltype <1-3> CTCL role for this machine:",
" -ctcl <1-3> 1 = console, 2 = game pod, 3 = cameraship.",
" Default when absent: console.",
" A cameraship MUST use 3. With 2 its Map/Armor",
" screen still opens and paints its background, but",
" draws no overlays at all, which looks like a video",
" card fault. The role in use is reported in",
" gos-displays.txt as 'CTCL type ='.",
" -dragon Disable CTCL entirely and run standalone.",
" -coop Co-operative arcade mode. Implies 1 coin per game",
" and the game-pod role.",
@@ -997,10 +1002,11 @@ static const char* const g_apszCommandLineHelp[] =
" newer .rpt format.",
" -fps Write a per-second frame pacing report to",
" gos-fps.txt next to the executable: average fps,",
" 1% low, worst frame in ms, and a count of frames",
" taking over twice the average (hitches). Useful",
" for confirming smooth pacing on the MFD modes.",
" Off unless this switch is given.",
" 5% low, worst frame in ms, and a count of frames",
" taking over twice the average (hitches). A summary",
" written at exit gives the whole-session 1% and",
" 0.1% lows. Useful for confirming smooth pacing on",
" the MFD modes. Off unless this switch is given.",
" -gamestats Save game statistics.",
" -help Show this reference and exit without starting.",
"",
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
TEST123
CHANGEME IN YOUR MW4PRINT APPLICATION!
BIN
View File
Binary file not shown.
+6 -6
View File
@@ -28,7 +28,7 @@ OutputAPI = bestavailable
Adapters = all
FullScreenOutput = default
FullScreenMode = true
ScalingMode = unspecified
ScalingMode = stretched_ar
ProgressiveScanlineOrder = false
EnumerateRefreshRates = false
@@ -37,7 +37,7 @@ Color = 100
Contrast = 100
InheritColorProfileInFullScreenMode = true
KeepWindowAspectRatio = true
KeepWindowAspectRatio = false
CaptureMouse = true
CenterAppWindow = false
DisableScreenSaver = false
@@ -119,11 +119,11 @@ DisplayROI =
Resampling = bilinear
PresentationModel = auto
ColorSpace = appdriven
WatermarkDisplayDuration = 0
WatermarkDisplayDuration = 30
FreeMouse = false
WindowedAttributes =
FullscreenAttributes =
FPSLimit = 0
FPSLimit = 60
Environment =
SystemHookFlags =
@@ -198,8 +198,8 @@ DitherOrderedMatrixSizeScale = 0
DisableAndPassThru = false
VideoCard = internal3D
VRAM = 256
VideoCard = geforce_9800_gt
VRAM = 1024
Filtering = appdriven
Mipmapping = appdriven
KeepFilterIfPointSampled = false
+39 -4
View File
@@ -27,7 +27,28 @@ DISPLAY AND VIDEO
value of 0 leaves that slot auto-detected.
Separators may be ',' '/' or ':'.
MFD1 and MFD2 only apply with -tmfds 4.
These are DirectDraw device numbers. They are NOT
the numbers shown in Windows Display Settings, and
on many machines the two do not match. Do not read
them off the Settings screen.
To find the right values: launch the game once,
then open gos-displays.txt next to MW4.exe and read
the 'Desktop arrangement, left to right' list. It
gives each monitor's position, size and device
number. Add 1 to the device number for -tmon.
Example: -tmon 1,2,4,3 swaps the two MFD panels.
-tident [seconds] Identify the displays, then exit. Each monitor is
filled with a colour and the number to use for it
in -tmon. Write the numbers down, then set -tmon in
the order main,radar,MFD1,MFD2.
This is the reliable way to map the monitors: the
numbers Windows Display Settings shows cannot be
read by any program, so they cannot be trusted to
match. Default 20 seconds; accepts 3 to 120.
No display mode is changed and the game does not
start - it exits when the time is up.
-tcoop <0-5> How the radar/MFD panels claim their displays.
0 = legacy single call (as shipped; works on XP
and under dgVoodoo2, fails on Windows 10).
@@ -41,6 +62,14 @@ DISPLAY AND VIDEO
panels never contend for it.
5 = as 4, plus ALLOWREBOOT.
Results are reported in gos-displays.txt.
-tmr <0-3> Cameraship Map/Armor screen diagnostics.
0 = normal.
1 = wait for the background blit to finish before
drawing the overlays.
2 = skip the background image entirely.
3 = as 2, plus a solid magenta test rectangle.
Use when that screen shows its background but no
overlay graphics or text.
-mechview <1|2> Show the rotating mech view. 1 = on the radar
-mv <1|2> screen, 2 = on the main screen. Default: off.
-3dt Draw the MFD target as a live 3D model instead of
@@ -62,6 +91,11 @@ POD HARDWARE AND ARCADE (CTCL)
-ctcltype <1-3> CTCL role for this machine:
-ctcl <1-3> 1 = console, 2 = game pod, 3 = cameraship.
Default when absent: console.
A cameraship MUST use 3. With 2 its Map/Armor
screen still opens and paints its background, but
draws no overlays at all, which looks like a video
card fault. The role in use is reported in
gos-displays.txt as 'CTCL type ='.
-dragon Disable CTCL entirely and run standalone.
-coop Co-operative arcade mode. Implies 1 coin per game
and the game-pod role.
@@ -122,10 +156,11 @@ LOGGING AND DIAGNOSTICS
newer .rpt format.
-fps Write a per-second frame pacing report to
gos-fps.txt next to the executable: average fps,
1% low, worst frame in ms, and a count of frames
taking over twice the average (hitches). Useful
for confirming smooth pacing on the MFD modes.
Off unless this switch is given.
5% low, worst frame in ms, and a count of frames
taking over twice the average (hitches). A summary
written at exit gives the whole-session 1% and
0.1% lows. Useful for confirming smooth pacing on
the MFD modes. Off unless this switch is given.
-gamestats Save game statistics.
-help Show this reference and exit without starting.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -109,7 +109,7 @@ timescoringatend=10.0
secmissionreplay=30.0
secmissionreport=15.0
MinShift=-180
lrpt=252026072ab4b906fabd1c154d3d8fd77942028e
lrpt=072003082ab4b906fabd1c154d3d8fd77942028e
TimeList_Index=5
TimeList_Value=10
RuleBook=1
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+33 -22
View File
@@ -23,7 +23,7 @@ page->GetEntry("bitdepth", &Environment.bitDepth);
Consequences of this design that matter in practice:
- **Section and key lookup is by name.** A misspelled key is not an error ? `GetEntry`
- **Section and key lookup is by name.** A misspelled key is not an error -- `GetEntry`
simply returns false and the compiled-in default is kept. **There is no warning.** This
is why several shipped keys silently do nothing (see "Dead settings" below).
- **The file is read at startup**, in `GetGameOSEnvironment` / `InitializeGameEngine`.
@@ -32,7 +32,7 @@ Consequences of this design that matter in practice:
host UI, and `[special commands] killgame` is cleared on use. Hand edits to those
sections can be overwritten.
- A few sections are read via the Win32 profile API (`GetPrivateProfileInt` /
`GetPrivateProfileString`) instead ? noted per section.
`GetPrivateProfileString`) instead -- noted per section.
### Related but separate files
@@ -44,6 +44,17 @@ Consequences of this design that matter in practice:
| `c:\ctcl.ini` | Arcade console configuration (pod IP list, launch command lines, voice macros). Hardcoded path. Not covered here. |
| `banner.txt` | mw4print bottom-of-sheet banner text. Plain text, first line only. |
### Files the game writes next to `MW4.exe`
Not configuration -- these are outputs, listed here because they are the first place to look
when something is misconfigured.
| File | Written when | Contents |
|---|---|---|
| `gos-displays.txt` | Every launch (truncated each time) | Full display start-up trace: Windows topology, DirectDraw enumeration, role selection with reasons, `-tmon` overrides, desktop left-to-right order, the CTCL role, and an explicit CLASH warning if two roles land on one device. Copy it before relaunching after a failure. |
| `gos-fps.txt` | Only with `-fps` | Per-second frame pacing (average, 5% low, worst frame, hitch count) plus a whole-session summary with 1% / 0.1% lows. Buffered, so a hard crash loses the tail. |
| `mw4-help.txt` | Only with `-help` | The full command-line reference; opened in Notepad, and the game then exits. |
---
## `[graphics options]`
@@ -57,11 +68,11 @@ Read in `MW4Application.cpp` (`GetGameOSEnvironment`) and `MWOptions.cpp`.
| `screenwidth` | int | 800 | Horizontal resolution, read by `MWOptions`. |
| `screenheight` | int | 600 | Vertical resolution. |
**Read but overridden in this build ? editing has no effect:**
**Read but overridden in this build -- editing has no effect:**
| Key | Why |
|---|---|
| `videodriverindex` | The `GetEntry` call is commented out and `Environment.FullScreenDevice` is forced to `0`. Use the `-tmon` command-line switch to assign display devices instead run `MW4.exe -tident` first to find out which number is which monitor, as Windows Display Settings numbers do not match. |
| `videodriverindex` | The `GetEntry` call is commented out and `Environment.FullScreenDevice` is forced to `0`. Use the `-tmon` command-line switch to assign display devices instead -- run `MW4.exe -tident` first to find out which number is which monitor, as Windows Display Settings numbers do not match. |
**Present in the shipped file and consumed by renderer subsystem initialisers**
(`MidLevelRenderer::InitializeClasses`, `gosFX`, `ElementRenderer`, `Compost`), which are
@@ -95,7 +106,7 @@ time.
| `killgame` | bool | false | **Self-clearing kill switch.** If true at startup, the game sets it back to false, saves `options.ini`, and immediately calls `ExitGameOS()`. Intended as a remote "do not start" flag for a pod. |
| `autotorsocenter` | int | 2 | Torso auto-centring mode (`VehicleInterface::perminateTorsoMode`). 0 = off, 1 = slow, 2 = fast. |
**Read but overridden in this build ? editing has no effect:**
**Read but overridden in this build -- editing has no effect:**
| Key | Why |
|---|---|
@@ -106,7 +117,7 @@ time.
## `[server]`
Multiplayer host defaults. **This section is written back** by the host configuration UI ?
Multiplayer host defaults. **This section is written back** by the host configuration UI --
do not hand-edit it while the game is running.
Verified read: `playerlimit` (`Adept/Application.cpp`, both `GetEntry` and `SetEntry`).
@@ -125,7 +136,7 @@ one-to-one with the in-game host options:
Notes:
- `allowed*1` / `allowed*2` are 32-bit hex masks covering items 0?31 and 32?63
- `allowed*1` / `allowed*2` are 32-bit hex masks covering items 0-31 and 32-63
respectively. `ffffffff` = everything permitted.
- `maxplayers` and `maxbots` are serialised to clients as **5-bit fields**, so the maximum
usable value is **31**. Writing 32 truncates to 0. See `RAISING-PLAYER-CAP.md`.
@@ -198,24 +209,24 @@ all offsets are axis offsets applied to the camera or its look-at point.
## `[Battle Tech Misc]`
Read by `CamerashipParams::LoadOptions` (`VehicleInterface.cpp`). **Several key names in
this section do not describe what they do** ? they appear to be deliberately obscured. The
this section do not describe what they do** -- they appear to be deliberately obscured. The
mapping below is from the source and is the authoritative meaning.
| Key | Type | Range / clamp | Actually sets |
|---|---|---|---|
| `SecsMissionReplay` | int | `<0` or `>=100` ¡æ 60 | `g_nSecsMissionReplay` ? mission replay duration. |
| `SecsMissionReport` | float | `<0` or `>=30` ¡æ 15 | `g_fSecsMissionReport` ? mission report screen duration. |
| `AutoPowerUpLevel` | float | clamped to 0.0?1.0 | `g_fAutoPowerUpLevel` ? auto power-up threshold. |
| `NeedFlushLevel` | float | clamped to 0.0?1.0 | `g_fNeedFlushLevel` ? heat level at which flush is advised. |
| `TimeMsgSender` | float | clamped to 0.1?5.0 | `g_fTimeMsgSender` ? how long a message sender name is shown. |
| `TimeList_Index` | int | `<0` ¡æ 0, `>=20` ¡æ 3 | `g_nTimeList_Index` ? selected entry in the lobby time-limit dropdown. |
| `TimeList_Value` | int | `<0` or `>=100` ¡æ 7 | `g_nTimeList_Value` ? lobby time limit in minutes. |
| `RuleBook` | int | 0 or 1 | ?? **`g_nMechVariant`** ? mech variant feature flag. Nothing to do with a rule book. |
| `DawnWar` | int | 0 or 1 | ?? **`g_nMechLabOp`** ? mechlab operation flag. |
| `BiggieSizeIt` | int | 0 or 1 | ?? **`g_nMechPodNum`** ? mech pod count flag, used by the console lobby to enable the larger roster (`USE_O_MORE_PODS`). |
| `CanYouHearTheFootSteps` | int | 0 or 1 | ?? **`g_nBlackMech`** ? black mech flag. |
| `SecsMissionReplay` | int | `<0` or `>=100` -> 60 | `g_nSecsMissionReplay` -- mission replay duration. |
| `SecsMissionReport` | float | `<0` or `>=30` -> 15 | `g_fSecsMissionReport` -- mission report screen duration. |
| `AutoPowerUpLevel` | float | clamped to 0.0-1.0 | `g_fAutoPowerUpLevel` -- auto power-up threshold. |
| `NeedFlushLevel` | float | clamped to 0.0-1.0 | `g_fNeedFlushLevel` -- heat level at which flush is advised. |
| `TimeMsgSender` | float | clamped to 0.1-5.0 | `g_fTimeMsgSender` -- how long a message sender name is shown. |
| `TimeList_Index` | int | `<0` -> 0, `>=20` -> 3 | `g_nTimeList_Index` -- selected entry in the lobby time-limit dropdown. **No longer used by the console lobby:** since the list was expanded to 23 entries (1-15, 20, 25, 30, 45, 60, 120, 180, 240) `ConLobbyMission.script` uses a literal index for the 7-minute default, so the script stays independent of the exe. Still read by the legacy non-MSL path. |
| `TimeList_Value` | int | `<0` or `>=100` -> 7 | `g_nTimeList_Value` -- lobby time limit in minutes. Still live: it is the mission length handed to the host, and what `[RookieMission] TimeLimit=-1` resolves to. |
| `RuleBook` | int | 0 or 1 | **(!)** **`g_nMechVariant`** -- mech variant feature flag. Nothing to do with a rule book. |
| `DawnWar` | int | 0 or 1 | **(!)** **`g_nMechLabOp`** -- mechlab operation flag. |
| `BiggieSizeIt` | int | 0 or 1 | **(!)** **`g_nMechPodNum`** -- mech pod count flag, used by the console lobby to enable the larger roster (`USE_O_MORE_PODS`). |
| `CanYouHearTheFootSteps` | int | 0 or 1 | **(!)** **`g_nBlackMech`** -- black mech flag. |
### ?? The shipped file misspells two of these
### WARNING -- the shipped file misspells two of these
The shipped `options.ini` contains:
@@ -289,7 +300,7 @@ Text block: `TextMarginL`, `TextMarginT`, `TextMarginR`, `TextMarginB`, `TextHei
These appear in the shipped `options.ini` but are **not read by any code** in this tree.
They are stock MechWarrior 4 leftovers. Editing them does nothing.
### `[network options]` ? entire section is dead
### `[network options]` -- entire section is dead
`connectiontype`, `connectionspeed`, `packetsize`, `defaultconnection`, `playericon`,
`teamicon`.
@@ -313,7 +324,7 @@ populated from the multiplayer connection wizard, not from this file.
## Practical notes
- **Back up `options.ini` before experimenting.** The game rewrites parts of it, and an
unknown key is silently ignored rather than reported, so a typo produces no diagnostic ?
unknown key is silently ignored rather than reported, so a typo produces no diagnostic --
just default behaviour.
- **Per-role files.** On a pod, the launcher copies `options-game.ini`, `options-cam.ini`
or `options-mr.ini` over `options.ini` depending on the machine's role. Edit the role file,
+1 -1
View File
@@ -82,7 +82,7 @@ release, producing the **V5.1.x** series maintained in this repository.
- **Full build reconstruction** — the complete toolchain (VC6, DX 7.0a, DX Media 6) is
self-contained in `build-env\`; the game and editor build from source with 0 errors
See `RELEASE-NOTES-5.1.0b_RC1.md` for pod-owner change details, and `CLAUDE.md` for the full
See `RELEASE-NOTES-5.1.0b_RC2.md` for pod-owner change details, and `CLAUDE.md` for the full
engineering history.
---
@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<title>BattleTech: FireStorm V5.1.0b_RC1 - Release Notes</title>
<title>BattleTech: FireStorm V5.1.0b_RC2 - Release Notes</title>
<style>
body { font-family: Calibri, Arial, sans-serif; font-size: 11pt; margin: 60px 72px; color: #1a1a1a; max-width: 900px; }
h1 { font-size: 20pt; color: #1F3864; border-bottom: 3px solid #1F3864; padding-bottom: 8px; margin-top: 0; }
@@ -27,14 +27,31 @@
</style>
</head>
<body>
<h1>BattleTech: FireStorm &mdash; V5.1.0b_RC1</h1>
<div class="meta">Release notes for pod owners &nbsp;&middot;&nbsp; 25 July 2026</div>
<p>This build covers everything since the <code>-tbaud</code> RIO update. It is a large release: 58 changes
<h1>BattleTech: FireStorm &mdash; V5.1.0b_RC2</h1>
<div class="meta">Release notes for pod owners &nbsp;&middot;&nbsp; 7 August 2026</div>
<p>This build covers everything since the <code>-tbaud</code> RIO update. It is a large release: 75 changes
spanning multiplayer, cockpit hardware, displays, 'Mech content, the console lobby and the
match printer.</p>
<div class="note"><p><strong>The most important thing to know:</strong> if you change nothing in your configuration, this build
behaves like your current one. Every new feature listed here is either a fix that applies
automatically, or an option you have to switch on deliberately. Nothing new is enabled by default.</p></div>
<h3>Already testing RC1? Here is what is new in RC2</h3>
<p>Everything else in this document was already in RC1 and is unchanged.</p>
<ul>
<li><strong><code>-tident</code></strong> -- the game now identifies your monitors for you, so you can set
<code>-tmon</code> correctly. See section 4.</li>
<li><strong><code>gos-displays.txt</code> now traces the whole display start-up</strong>, including a
plain-English <strong>CLASH</strong> warning when two panels land on the same monitor, and a line
stating this machine's CTCL role. See section 8.</li>
<li><strong>Panels are now released correctly when the display mode changes</strong> -- a real fault
that could stop the MFDs from restarting. See section 4.</li>
<li><strong><code>-tmr</code></strong> -- diagnostics for a cameraship Map/Armor screen that shows its
background but no overlays, plus the field check that usually explains it. See section 4.</li>
<li><strong>Match time limits now go up to 240 minutes</strong>, and the default is 7 minutes again
(it had silently become 4). See section 2.</li>
<li><strong>The console lobby now reads <code>V5.1.0b2</code>.</strong> Use this to confirm a pod actually
received the new content packages.</li>
</ul>
<hr>
<h2>1. Read this first -- required on Windows 10 / 11</h2>
<h3>Run <code>set-appcompat.bat</code> after installing</h3>
@@ -104,8 +121,13 @@ matches. It is the authoritative reference for the file format -- this page only
the feature on.</p></div>
<p>The <strong>Default</strong> button restores standard settings, so you can always get back to a clean lobby.</p>
<h3>Longer match times</h3>
<p>The multiplayer time limit list has been expanded from 9 options to 18:
<strong>1 through 15 minutes, plus 20, 25 and 30.</strong> The dropdown scrolls to fit them.</p>
<p>The multiplayer time limit list has been expanded from 9 options to 23:
<strong>1 through 15 minutes, plus 20, 25, 30, 45, 60, 120, 180 and 240.</strong> The dropdown scrolls
to fit them. Long-format events no longer need a mission restarted part way through.</p>
<p><strong>The default time limit is 7 minutes again.</strong> While the list was being extended it had
silently become 4 minutes, because the default was stored as a position in the list rather than as
a number of minutes. Fixed.</p>
<p>This is console and content only -- it arrives with the resource packages, not with <code>MW4.exe</code>.</p>
<hr>
<h2>3. Cockpit and RIO hardware</h2>
<h3>Throttle zero fix</h3>
@@ -258,6 +280,20 @@ another program taking the screen. The panels were being re-opened without the p
being closed first, so they collided with themselves. Most pods never saw it; it showed up
reliably on machines where one of the panels was on the monitor Windows treats as primary.</p>
<p><strong>Applies automatically.</strong> No configuration needed.</p>
<h3>Cameraship Map/Armor screen shows its background but nothing else</h3>
<p>If the second screen on a cameraship lights up, shows the correct background artwork, and then
draws <strong>no armour, score or map overlays at all</strong>, check the pod's launch line first:</p>
<div class="warn"><p><strong>A cameraship must be launched with <code>-ctcltype 3</code>.</strong>
<code>-ctcltype 2</code> is a game pod.</p></div>
<p>With the wrong role the screen still opens and still paints its background -- that part does not
depend on the role -- but the overlay drawing is skipped entirely. The result looks exactly like a
graphics card or driver fault, which is how it has been misdiagnosed in the past. It is not.</p>
<p>The game now records this for you: <code>gos-displays.txt</code> contains a line reading
<code>CTCL type = 3&nbsp;&nbsp;(cameraship - overlays WILL be drawn)</code>, or the equivalent warning
if the role is wrong. Check that before suspecting hardware.</p>
<p>If the role is correct and the overlays are still missing, <code>-tmr 3</code> draws a solid magenta
test rectangle on that screen. If the magenta appears, the display and 3D device are working and
the problem is elsewhere; include <code>gos-displays.txt</code> with the report.</p>
<hr>
<h2>5. 'Mechs and content</h2>
<h3>Six rookie 'Mechs instead of four</h3>
@@ -359,7 +395,8 @@ the shipped language file was a Korean build. They now read <strong>More Details
<pre><code>MW4.exe -fps
</code></pre>
<p>Writes <code>gos-fps.txt</code> next to the game with a per-second breakdown -- average frame rate, the
slowest frames, and a count of stutters -- plus a summary at the end. <strong>Off unless you ask for it</strong>,
worst 5% of frames, the single worst frame, and a count of stutters -- plus a whole-session summary
at the end giving the true 1% and 0.1% lows. <strong>Off unless you ask for it</strong>,
and it costs nothing when unused.</p>
<h3>Display troubleshooting log</h3>
<p>When display problems occur, the game now writes <strong><code>gos-displays.txt</code></strong> next to the exe listing
@@ -373,6 +410,10 @@ number to use for each -- the same numbers <code>-tident</code> puts on the scre
position 1 : device 0 -&gt; \\.\DISPLAY1 800x600 at 0,0 [WINDOWS PRIMARY]
position 2 : device 3 -&gt; \\.\DISPLAY4 640x480 at 800,122
</code></pre>
<p>It also records the role this machine was launched as, which is worth checking on any cameraship
that is not drawing its overlays (section 4):</p>
<pre><code> CTCL type = 3 (cameraship - overlays WILL be drawn)
</code></pre>
<div class="note"><p>The file is rewritten every time the game starts. If you have a failure worth reporting, copy
the file before launching again.</p></div>
<hr>
@@ -417,12 +458,20 @@ the file before launching again.</p></div>
<td>Game starts normally</td>
</tr>
<tr>
<td><code>-tmr &lt;0-3&gt;</code></td>
<td>Cameraship Map/Armor screen troubleshooting only</td>
<td>Normal behaviour (0)</td>
</tr>
<tr>
<td><code>-tcoop &lt;0-5&gt;</code></td>
<td>Display troubleshooting only -- <strong>do not change</strong></td>
<td>Standard behaviour (0)</td>
</tr>
</tbody>
</table>
<p><code>-ctcltype &lt;1-3&gt;</code> is not new, but it is worth repeating: <strong>1 = console, 2 = game pod,
3 = cameraship</strong>, and getting it wrong on a cameraship is the usual cause of a blank Map/Armor
screen (section 4).</p>
<hr>
<h2>10. Known issues and limitations</h2>
<ul>
@@ -436,6 +485,12 @@ the file before launching again.</p></div>
keep-aspect scaling for correct geometry with black bars at the sides.</li>
<li><strong>The AppCompat registration is tied to the install folder.</strong> Move the game, re-run
<code>set-appcompat.bat</code>.</li>
<li><strong>Sound output is two-speaker stereo.</strong> Surround and quad speaker rigs are downmixed.
This is how the game has always behaved; making use of more speakers is being investigated for a
later release.</li>
<li><strong><code>-tident</code> is only meaningful on a machine with more than one monitor.</strong> On a
single-screen test PC it may briefly paint one number over another, because Windows can present a
single monitor to the game as two devices. Harmless, and it cannot happen on a real pod.</li>
</ul>
<hr>
<h2>11. Upgrade checklist</h2>
@@ -448,9 +503,11 @@ the file before launching again.</p></div>
display: all MFD modes (spanned <code>-tmfds 1</code> / <code>-tmfds 3</code>, split <code>-tmfds 4</code>) and cameraship
mode. Only console mode, on a single display, does without it. Windows XP pods never
need it.</li>
<li>Launch and confirm the console lobby reads the new version.</li>
<li>Launch and confirm the console lobby reads <strong><code>V5.1.0b2</code></strong>. If it still shows an
older version, the resource packages did not get copied.</li>
<li>If your pod uses MFDs or a cameraship, run <code>MW4.exe -tident</code> once and check each monitor
shows the role you expect. If any are wrong, note the numbers shown and correct <code>-tmon</code>.</li>
shows the role you expect. If any are wrong, note the numbers shown and correct <code>-tmon</code>.
On a cameraship, also confirm the launch line uses <code>-ctcltype 3</code>.</li>
<li>Play one mission end to end before putting the pod back into service.</li>
<li>Optional: add <code>[automaticmode]</code> and <code>[RookieMission]</code> to <code>options.ini</code> if you want the new
Load File button or custom rookie missions.</li>
@@ -1,8 +1,8 @@
# BattleTech: FireStorm -- V5.1.0b_RC1
# BattleTech: FireStorm -- V5.1.0b_RC2
**Release notes for pod owners**
This build covers everything since the `-tbaud` RIO update. It is a large release: 58 changes
This build covers everything since the `-tbaud` RIO update. It is a large release: 75 changes
spanning multiplayer, cockpit hardware, displays, 'Mech content, the console lobby and the
match printer.
@@ -10,6 +10,24 @@ match printer.
> behaves like your current one. Every new feature listed here is either a fix that applies
> automatically, or an option you have to switch on deliberately. Nothing new is enabled by default.
### Already testing RC1? Here is what is new in RC2
Everything else in this document was already in RC1 and is unchanged.
- **`-tident`** -- the game now identifies your monitors for you, so you can set `-tmon`
correctly. See section 4.
- **`gos-displays.txt` now traces the whole display start-up**, including a plain-English
**CLASH** warning when two panels land on the same monitor, and a line stating this machine's
CTCL role. See section 8.
- **Panels are now released correctly when the display mode changes** -- a real fault that could
stop the MFDs from restarting. See section 4.
- **`-tmr`** -- diagnostics for a cameraship Map/Armor screen that shows its background but no
overlays, plus the field check that usually explains it. See section 4.
- **Match time limits now go up to 240 minutes**, and the default is 7 minutes again (it had
silently become 4). See section 2.
- **The console lobby now reads `V5.1.0b2`.** Use this to confirm a pod actually received the
new content packages.
---
## 1. Read this first -- required on Windows 10 / 11
@@ -87,8 +105,15 @@ The **Default** button restores standard settings, so you can always get back to
### Longer match times
The multiplayer time limit list has been expanded from 9 options to 18:
**1 through 15 minutes, plus 20, 25 and 30.** The dropdown scrolls to fit them.
The multiplayer time limit list has been expanded from 9 options to 23:
**1 through 15 minutes, plus 20, 25, 30, 45, 60, 120, 180 and 240.** The dropdown scrolls to fit
them. Long-format events no longer need a mission restarted part way through.
**The default time limit is 7 minutes again.** While the list was being extended it had silently
become 4 minutes, because the default was stored as a position in the list rather than as a
number of minutes. Fixed.
This is console and content only -- it arrives with the resource packages, not with `MW4.exe`.
---
@@ -270,6 +295,25 @@ reliably on machines where one of the panels was on the monitor Windows treats a
**Applies automatically.** No configuration needed.
### Cameraship Map/Armor screen shows its background but nothing else
If the second screen on a cameraship lights up, shows the correct background artwork, and then
draws **no armour, score or map overlays at all**, check the pod's launch line first:
> **A cameraship must be launched with `-ctcltype 3`.** `-ctcltype 2` is a game pod.
With the wrong role the screen still opens and still paints its background -- that part does not
depend on the role -- but the overlay drawing is skipped entirely. The result looks exactly like
a graphics card or driver fault, which is how it has been misdiagnosed in the past. It is not.
The game now records this for you: `gos-displays.txt` contains a line reading
`CTCL type = 3 (cameraship - overlays WILL be drawn)`, or the equivalent warning if the role is
wrong. Check that before suspecting hardware.
If the role is correct and the overlays are still missing, `-tmr 3` draws a solid magenta test
rectangle on that screen. If the magenta appears, the display and 3D device are working and the
problem is elsewhere; include `gos-displays.txt` with the report.
---
## 5. 'Mechs and content
@@ -405,8 +449,9 @@ MW4.exe -fps
```
Writes `gos-fps.txt` next to the game with a per-second breakdown -- average frame rate, the
slowest frames, and a count of stutters -- plus a summary at the end. **Off unless you ask for it**,
and it costs nothing when unused.
worst 5% of frames, the single worst frame, and a count of stutters -- plus a whole-session
summary at the end giving the true 1% and 0.1% lows. **Off unless you ask for it**, and it costs
nothing when unused.
### Display troubleshooting log
@@ -425,6 +470,13 @@ number to use for each -- the same numbers `-tident` puts on the screens:
position 2 : device 3 -> \\.\DISPLAY4 640x480 at 800,122
```
It also records the role this machine was launched as, which is worth checking on any cameraship
that is not drawing its overlays (section 4):
```
CTCL type = 3 (cameraship - overlays WILL be drawn)
```
> The file is rewritten every time the game starts. If you have a failure worth reporting, copy
> the file before launching again.
@@ -440,8 +492,13 @@ number to use for each -- the same numbers `-tident` puts on the screens:
| `-tbaud <rate>` | COM1 speed for replica RIO boards | Original board speed |
| `-fps` | Write a performance log | No log, no overhead |
| `-help` | Show the full switch reference and exit | Game starts normally |
| `-tmr <0-3>` | Cameraship Map/Armor screen troubleshooting only | Normal behaviour (0) |
| `-tcoop <0-5>` | Display troubleshooting only -- **do not change** | Standard behaviour (0) |
`-ctcltype <1-3>` is not new, but it is worth repeating: **1 = console, 2 = game pod,
3 = cameraship**, and getting it wrong on a cameraship is the usual cause of a blank Map/Armor
screen (section 4).
---
## 10. Known issues and limitations
@@ -456,6 +513,12 @@ number to use for each -- the same numbers `-tident` puts on the screens:
keep-aspect scaling for correct geometry with black bars at the sides.
- **The AppCompat registration is tied to the install folder.** Move the game, re-run
`set-appcompat.bat`.
- **Sound output is two-speaker stereo.** Surround and quad speaker rigs are downmixed. This is
how the game has always behaved; making use of more speakers is being investigated for a
later release.
- **`-tident` is only meaningful on a machine with more than one monitor.** On a single-screen
test PC it may briefly paint one number over another, because Windows can present a single
monitor to the game as two devices. Harmless, and it cannot happen on a real pod.
---
@@ -469,9 +532,11 @@ number to use for each -- the same numbers `-tident` puts on the screens:
display: all MFD modes (spanned `-tmfds 1` / `-tmfds 3`, split `-tmfds 4`) and cameraship
mode. Only console mode, on a single display, does without it. Windows XP pods never
need it.
5. Launch and confirm the console lobby reads the new version.
5. Launch and confirm the console lobby reads **`V5.1.0b2`**. If it still shows an older
version, the resource packages did not get copied.
6. If your pod uses MFDs or a cameraship, run `MW4.exe -tident` once and check each monitor
shows the role you expect. If any are wrong, note the numbers shown and correct `-tmon`.
On a cameraship, also confirm the launch line uses `-ctcltype 3`.
7. Play one mission end to end before putting the pod back into service.
8. Optional: add `[automaticmode]` and `[RookieMission]` to `options.ini` if you want the new
Load File button or custom rookie missions.
-110
View File
@@ -1,110 +0,0 @@
Testing Checklist -- eaa5fd3 through 2026-07-23
Branch: 5.1.0b-in-progress
Last known-good pod test: before eaa5fd3
================================================
1. DUAL MFD (mode 4) -- right device stagger fix
[ ] In a pod with two MFD screens (mode 4), verify right MFD shows correct
channel data (channels 3-4) and does not flash blank/grid-only frames
[ ] Left MFD still shows channels 0-2 correctly at all times
[ ] Radar display unaffected
[ ] Mode 1 (single MFD) still works normally (code path unchanged)
2. SERIAL RIO / -tbaud BAUD RATE SCALING
[ ] Default 9600 baud RIO board: poll timeout is 50 ms (same as before)
[ ] High-speed board at 115200 baud: poll timeout is ~5 ms (faster response)
[ ] Custom -tbaud 31250: timeout is ceil(480000/31250) = 16 ms
[ ] Verify no regression in button/lamp/analog response at all three rates
[ ] Verify game launches normally without -tbaud flag
3. MULTIPLAYER -- 16 PILOTS + 1 CAMERASHIP
[ ] Host a 16-player game; a 17th connection as cameraship can join without
"Too many player/bots" error
[ ] The cameraship slot does not count against the pilot cap in the lobby
[ ] Standard 16-pilot session (no cameraship) still works normally
[ ] Player limit slider in lobby still functions correctly at runtime
[ ] COOP mode unaffected (still caps at 9 pilots + bots)
4. MECH LOADOUTS
[ ] Battlemaster IS: spawns with PPC, 6x ML (3 RT/3 LT), 2x MG (200 rds), SRM6 (15 rds)
[ ] Battlemaster IS: all weapons in group 1 except SRM6 (group 2)
[ ] Battlemaster Clan 2C: spawns with ER PPC, 6x ER ML, 2x Clan Gauss (16 rds each), Clan SSRM6 (15 rds)
[ ] Behemoth / Behemoth II: Gauss rifles fire with group 1 (not group 3)
5. CONLOBBY -- V5.1.0b2 / SUPER6 MECH ROTATION
[ ] Console title displays "BattleTech Console V5.1.0b2"
[ ] Rookie mech cycle shows 6 mechs: Archer, Loki, Madcat, Thor, Vulture, Warhammer
[ ] Right-click random mech picks from all 6 (not 5)
[ ] MP time-limit dropdown shows 23 entries (1-15, 20, 25, 30, 45, 60, 120, 180, 240 min) and scrolls correctly
[ ] MP time-limit defaults to 7 min (was wrongly defaulting to 4)
[ ] Lobby launches correctly with 1-16 players
6. MW4PRINT v2.0
[ ] Print job completes normally; version banner shows "2.0 / 2026"
[ ] File -> Database Settings (Ctrl+D) dialog opens; MySQL host/user/pass/db fields editable
[ ] With a MySQL server configured, a print job exports match data to the database
[ ] Without MySQL configured (or libmysql.dll absent), print job completes silently with no crash
[ ] File -> Banner Setting... opens; changing the text updates the printed bottom-of-sheet URL
[ ] Banner setting persists after closing and reopening mw4print
7. LANGUAGE DLL -- ENGLISH BUTTON LABELS
[ ] After a game crash/exception, the GameOS error dialog shows English button
labels (More Details / Continue / Exit) instead of Korean ??? characters
8. SOURCE ENCODING / BUILD HEALTH
[ ] Full Release build completes 0 errors (the min/max fix was the last issue)
[ ] No new warnings introduced beyond the pre-existing 384
------------------------------------------------
Added 2026-07-23 (commit 5813aeb6)
------------------------------------------------
9. ROOKIE MISSION -- CONFIGURABLE DEFAULTS VIA options.ini
These defaults are read by CTCL_SetCDSP at startup and exposed as gosScript
globals (g_szRookieMission, g_nRookieGameType, g_nRookieTimeLimit, etc.).
The console script reads them instead of hardcoded values when "Default" is
clicked or when the Rookie mission auto-loads.
[ ] Without [RookieMission] section in options.ini: Rookie mission defaults
to "ScarabStronghold - Attrition", game type Attrition, unlimited ammo on,
all other params at zero/off -- same behavior as before
[ ] Add [RookieMission] section to options.ini with MissionName and GameType
overridden; restart game; "Default" button in console loads the specified
mission and game type correctly
[ ] TimeLimit=-1 in options.ini: lobby uses the server's default time setting
(g_nTimeList_Value); TimeLimit=5 sets the lobby time limit to 5 minutes
[ ] All 12 overridable params work individually: Visibility, Weather, TimeOfDay,
Radar, HeatOn, FriendlyFire, SplashDamage, UnlimitedAmmo, WeaponJam,
AdvanceMode, ArmorMode
[ ] Game launches and functions normally when [RookieMission] section is absent
(no crash, no STOP on missing keys)
[ ] Requires rebuild: MW4.exe (Release + Profile); ScriptStrings.dll
10. MECHLAB -- TURN RATE LABEL (StringResource.rc)
IDS_ML_CH_TURNRATE changed from "Turn Rate (Degrees/Sec.):" to
"Turn Rate (Top Speed Rad/Sec):". ScriptStrings.dll must be rebuilt.
[ ] In mechlab, the turn rate stat row label reads "Turn Rate (Top Speed Rad/Sec):"
[ ] No other mechlab labels affected
[ ] Requires rebuild: ScriptStrings.dll (part of normal MW4Application build)
11. HSH ASSET FILE RENAMES -- MFD AND MECHS PORTRAITS
Several hsh/ BMP files were misnamed relative to what the game loads.
Filenames now match the canonical stems used in huddamage.cpp texturename[]
(hsh/MFD, hsh/hud, hsh/radar/hud) and GetLocString DNL strings (hsh/Mechs).
hsh/MFD/ -- in-game target MFD damage display (uses texturename[] canonical):
[ ] Assassin II: MFD shows correct silhouette during combat
(was assassinii.bmp, now assassin2.bmp -- matches M_Assassin2 entry)
[ ] All other MFD silhouettes display correctly in combat for all 65 mechs
(bulk refresh from 5.0.7D release; verify no missing/black MFD panels)
hsh/Mechs/ -- mw4print post-match scorecard portraits:
[ ] Print a post-match scorecard featuring a Battlemaster IIc pilot;
portrait image appears (was battlemasteriic.bmp, now "battlemaster iic.bmp")
[ ] Print a scorecard featuring a Behemoth II pilot; portrait appears
(was behemothii.bmp, now "behemoth ii.bmp")
[ ] Print a scorecard featuring a Mad Cat MKII pilot; portrait appears
(was "mad cat mk.ii.bmp", now "mad cat mkii.bmp")
[ ] Scorecards for all other mechs still show portraits correctly
+220
View File
@@ -0,0 +1,220 @@
Testing Checklist -- V5.1.0b_RC2 (eaa5fd3 through 2026-08-07)
Branch: 5.1.0b-in-progress
Last known-good pod test: before eaa5fd3
Sections 1-11 were already in RC1; sections 12-17 are new in RC2.
Build requirements for RC2:
* MW4.exe (Release + Profile) -- CoreTech GameOS and MW4Application changed
(-tident, display trace, panel re-entry fix, -tmr, help text).
* Resource repack -- ConLobby.script / ConLobbyMission.script / the mech
subsystems live in props.mw4. Delete resource\props.mw4 and props.dep, then
run build-env\build-resources.ps1 so the repack is full, not incremental.
* Redeploy with build-env\deploy-mw4.ps1, then run set-appcompat.bat at the
install path.
================================================
1. DUAL MFD (mode 4) -- right device stagger fix
[ ] In a pod with two MFD screens (mode 4), verify right MFD shows correct
channel data (channels 3-4) and does not flash blank/grid-only frames
[ ] Left MFD still shows channels 0-2 correctly at all times
[ ] Radar display unaffected
[ ] Mode 1 (single MFD) still works normally (code path unchanged)
2. SERIAL RIO / -tbaud BAUD RATE SCALING
[ ] Default 9600 baud RIO board: poll timeout is 50 ms (same as before)
[ ] High-speed board at 115200 baud: poll timeout is ~5 ms (faster response)
[ ] Custom -tbaud 31250: timeout is ceil(480000/31250) = 16 ms
[ ] Verify no regression in button/lamp/analog response at all three rates
[ ] Verify game launches normally without -tbaud flag
3. MULTIPLAYER -- 16 PILOTS + 1 CAMERASHIP
[ ] Host a 16-player game; a 17th connection as cameraship can join without
"Too many player/bots" error
[ ] The cameraship slot does not count against the pilot cap in the lobby
[ ] Standard 16-pilot session (no cameraship) still works normally
[ ] Player limit slider in lobby still functions correctly at runtime
[ ] COOP mode unaffected (still caps at 9 pilots + bots)
4. MECH LOADOUTS
[ ] Battlemaster IS: spawns with PPC, 6x ML (3 RT/3 LT), 2x MG (200 rds), SRM6 (15 rds)
[ ] Battlemaster IS: all weapons in group 1 except SRM6 (group 2)
[ ] Battlemaster Clan 2C: spawns with ER PPC, 6x ER ML, 2x Clan Gauss (16 rds each), Clan SSRM6 (15 rds)
[ ] Behemoth / Behemoth II: Gauss rifles fire with group 1 (not group 3)
5. CONLOBBY -- V5.1.0b2 / SUPER6 MECH ROTATION
[ ] Console title displays "BattleTech Console V5.1.0b2"
[ ] Rookie mech cycle shows 6 mechs: Archer, Loki, Madcat, Thor, Vulture, Warhammer
[ ] Right-click random mech picks from all 6 (not 5)
[ ] MP time-limit dropdown shows 23 entries (1-15, 20, 25, 30, 45, 60, 120, 180, 240 min) and scrolls correctly
[ ] MP time-limit defaults to 7 min (was wrongly defaulting to 4)
[ ] Lobby launches correctly with 1-16 players
6. MW4PRINT v2.0
[ ] Print job completes normally; version banner shows "2.0 / 2026"
[ ] File -> Database Settings (Ctrl+D) dialog opens; MySQL host/user/pass/db fields editable
[ ] With a MySQL server configured, a print job exports match data to the database
[ ] Without MySQL configured (or libmysql.dll absent), print job completes silently with no crash
[ ] File -> Banner Setting... opens; changing the text updates the printed bottom-of-sheet URL
[ ] Banner setting persists after closing and reopening mw4print
7. LANGUAGE DLL -- ENGLISH BUTTON LABELS
[ ] After a game crash/exception, the GameOS error dialog shows English button
labels (More Details / Continue / Exit) instead of Korean ??? characters
8. SOURCE ENCODING / BUILD HEALTH
[ ] Full Release build completes 0 errors (the min/max fix was the last issue)
[ ] No new warnings introduced beyond the pre-existing 384
------------------------------------------------
Added 2026-07-23 (commit 5813aeb6)
------------------------------------------------
9. ROOKIE MISSION -- CONFIGURABLE DEFAULTS VIA options.ini
These defaults are read by CTCL_SetCDSP at startup and exposed as gosScript
globals (g_szRookieMission, g_nRookieGameType, g_nRookieTimeLimit, etc.).
The console script reads them instead of hardcoded values when "Default" is
clicked or when the Rookie mission auto-loads.
[ ] Without [RookieMission] section in options.ini: Rookie mission defaults
to "ScarabStronghold - Attrition", game type Attrition, unlimited ammo on,
all other params at zero/off -- same behavior as before
[ ] Add [RookieMission] section to options.ini with MissionName and GameType
overridden; restart game; "Default" button in console loads the specified
mission and game type correctly
[ ] TimeLimit=-1 in options.ini: lobby uses the server's default time setting
(g_nTimeList_Value); TimeLimit=5 sets the lobby time limit to 5 minutes
[ ] All 12 overridable params work individually: Visibility, Weather, TimeOfDay,
Radar, HeatOn, FriendlyFire, SplashDamage, UnlimitedAmmo, WeaponJam,
AdvanceMode, ArmorMode
[ ] Game launches and functions normally when [RookieMission] section is absent
(no crash, no STOP on missing keys)
[ ] Requires rebuild: MW4.exe (Release + Profile); ScriptStrings.dll
10. MECHLAB -- TURN RATE LABEL (StringResource.rc)
IDS_ML_CH_TURNRATE changed from "Turn Rate (Degrees/Sec.):" to
"Turn Rate (Top Speed Rad/Sec):". ScriptStrings.dll must be rebuilt.
[ ] In mechlab, the turn rate stat row label reads "Turn Rate (Top Speed Rad/Sec):"
[ ] No other mechlab labels affected
[ ] Requires rebuild: ScriptStrings.dll (part of normal MW4Application build)
11. HSH ASSET FILE RENAMES -- MFD AND MECHS PORTRAITS
Several hsh/ BMP files were misnamed relative to what the game loads.
Filenames now match the canonical stems used in huddamage.cpp texturename[]
(hsh/MFD, hsh/hud, hsh/radar/hud) and GetLocString DNL strings (hsh/Mechs).
hsh/MFD/ -- in-game target MFD damage display (uses texturename[] canonical):
[ ] Assassin II: MFD shows correct silhouette during combat
(was assassinii.bmp, now assassin2.bmp -- matches M_Assassin2 entry)
[ ] All other MFD silhouettes display correctly in combat for all 65 mechs
(bulk refresh from 5.0.7D release; verify no missing/black MFD panels)
hsh/Mechs/ -- mw4print post-match scorecard portraits:
[ ] Print a post-match scorecard featuring a Battlemaster IIc pilot;
portrait image appears (was battlemasteriic.bmp, now "battlemaster iic.bmp")
[ ] Print a scorecard featuring a Behemoth II pilot; portrait appears
(was behemothii.bmp, now "behemoth ii.bmp")
[ ] Print a scorecard featuring a Mad Cat MKII pilot; portrait appears
(was "mad cat mk.ii.bmp", now "mad cat mkii.bmp")
[ ] Scorecards for all other mechs still show portraits correctly
------------------------------------------------
Added for RC2 (2026-07-25 through 2026-08-07)
------------------------------------------------
12. -tident DISPLAY IDENTIFY MODE (new switch)
MW4.exe -tident [3..120, default 20] paints every display with a colour,
its -tmon number, its DirectDraw device index and its current role, then
exits. Uses DDSCL_NORMAL + GDI: no exclusive mode, no display mode change.
[ ] MW4.exe -tident on a 4-monitor pod: every monitor shows a distinct
colour and a large number; no monitor is left on the desktop
[ ] The role shown on each monitor (main / radar / mfd1 / mfd2) matches
what that monitor actually displays during a mission
[ ] The game exits on its own when the timer expires, and does NOT start
[ ] -tident 5 exits after ~5 s; -tident 200 clamps to the accepted range
[ ] After -tident, the desktop is unchanged: same resolution, colour depth
and monitor arrangement as before (nothing to restore by hand)
[ ] Works on a pod where the MFD modes are currently failing (that is the
case it exists for)
[ ] Everything painted on screen also appears in gos-displays.txt
[ ] Typing those numbers into -tmon puts each panel on the intended monitor
13. gos-displays.txt FULL START-UP TRACE
Startup-only logging; no frame-loop cost. File is truncated each launch.
[ ] File is created next to MW4.exe on every launch, including launches
that fail during panel bring-up (open-append-close, survives a crash)
[ ] Header shows the exe path, the full command line, and -tmfds / -tmon
converted to 0-based device indices
[ ] Windows desktop topology section lists every \\.\DISPLAYn with its
friendly name, attached/primary state and current mode
[ ] Each enumeration callback is logged with GUID and resolved monitor
[ ] Device table appears three times (before merge, after merge, final)
and the adapter grouping lists devices sharing one card
[ ] Role selection prints the chosen device AND the reason each skipped
device was skipped
[ ] Each -tmon override reports APPLIED or REJECTED with what auto-detect
had chosen
[ ] "Desktop arrangement, left to right" block matches the physical layout
[ ] CLASH check: deliberately run -tmon with the same device twice (e.g.
-tmon 1,1,3,4) and confirm the report names the clash explicitly
[ ] "CTCL type = <n>" line is present and correct on console, game pod and
cameraship
[ ] Startup time is not noticeably longer than the previous build
14. PANEL RE-ENTRY FIX (HSH_EnterFullScreen2 releases before re-opening)
Panels used to be re-opened without the previous DirectDraw objects being
released, leaking the exclusive claim. Bites hardest when a panel sits on
the monitor Windows treats as primary.
[ ] Full MFD pod (-tmfds 4) survives an Alt-Tab out and back with all
panels still drawing
[ ] Panels still work after a display mode change (shell -> mission ->
shell, and mission restart)
[ ] gos-displays.txt shows HSH_EnterFullScreen2 running more than once with
NO DDERR_EXCLUSIVEMODEALREADYSET / DDERR_NOCOOPERATIVELEVELSET on the
later entries
[ ] Cameraship (mr_device) path: same Alt-Tab / mode-change test
[ ] Test at least once on a machine where a panel IS on the Windows primary
monitor -- that is the configuration that used to fail
15. CAMERASHIP MAP/ARMOR SCREEN AND -tmr
Field report root cause was -ctcltype 2 (game pod) on a cameraship, not a
video card. Overlays are gated on the CTCL role; the background is not.
[ ] Cameraship launched with -ctcltype 3: Map/Armor screen shows background
AND armour/score/map overlays
[ ] gos-displays.txt reads "CTCL type = 3 (cameraship - overlays WILL be
drawn)"
[ ] Launch the same machine with -ctcltype 2 and confirm the documented
symptom (background only, no overlays) and the matching log line --
this is the triage rule, worth seeing once
[ ] -tmr 0 (default / switch absent): behaviour identical to the previous
build
[ ] -tmr 3 paints a magenta test rectangle on the Map/Armor screen
[ ] -tmr 1 and -tmr 2 run without crashing
[ ] Draw-call counts are reported for the first 5 frames when -tmr is set
16. MP TIME LIMITS TO 240 MIN -- IN-MISSION BEHAVIOUR
Extends section 5, which covers the lobby dropdown, the 7-minute default
and the console title. Content only (props.mw4). Requires a full repack:
delete resource\props.mw4 and props.dep first, then run
build-env\build-resources.ps1.
[ ] Default button returns the time limit to 7 minutes
[ ] Select 240 minutes, launch, and confirm the in-mission timer starts at
240:00 and counts down correctly
[ ] Mission ends on time expiry at a long setting (spot-check one, e.g. 45)
[ ] PC host lobby (HostLobbyMission) time list shows the same 23 entries and
does not crash when opened -- the else-branch re-brace
17. -help AND DOCUMENTATION
[ ] MW4.exe -help writes mw4-help.txt and opens it; game does not start
[ ] -tident, -tmr, -tcoop, -tbaud, -tmfds 4, -tmon and -fps all appear with
correct ranges
[ ] -tmon entry states these are NOT Windows Display Settings numbers
[ ] -ctcltype entry states a cameraship must use 3
[ ] -fps entry describes the per-second 5% low and the session 1% / 0.1%
summary (matches what gos-fps.txt actually prints)