diff --git a/.gitignore b/.gitignore index a69b17dd..60813275 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/Gameleap/code/mw4/Code/MW4Application/MW4Application.cpp b/Gameleap/code/mw4/Code/MW4Application/MW4Application.cpp index 82895d92..c1f35b8f 100644 --- a/Gameleap/code/mw4/Code/MW4Application/MW4Application.cpp +++ b/Gameleap/code/mw4/Code/MW4Application/MW4Application.cpp @@ -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.", "", diff --git a/MW4/Launcher.exe b/MW4/Launcher.exe index 57240a2f..dfa0fb27 100755 --- a/MW4/Launcher.exe +++ b/MW4/Launcher.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ea7013f13397c153a2819bf3c01e89dec008777f787c18adae941fabe14bcba +oid sha256:f661cfed93a819c526d0183a3fc4a2f1ffd79eb12a75ac840a1795cb3f510160 size 77892 diff --git a/MW4/MW4.exe b/MW4/MW4.exe index 51582e2f..3e392871 100755 --- a/MW4/MW4.exe +++ b/MW4/MW4.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:962dbea3e33bd30d8ce4b3c43e9cb8657920d3532e8eccbb67062f4fb4254972 -size 3665920 +oid sha256:c733c486473df5e92558def73c3acc3f4a696dea8c4a5c9fe8e2476723a56789 +size 3678208 diff --git a/MW4/MW4pro.exe b/MW4/MW4pro.exe index c266ce3b..8bc09dda 100755 --- a/MW4/MW4pro.exe +++ b/MW4/MW4pro.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95a518a9dcf5f13f5a94246d97373b1fd066e6e1e53113b03fd8a0db20ad006d -size 4411392 +oid sha256:127d0f31f9e6ce05ead5a2185fb07d28ccd4aae84656364f4cd93425a7f5cc32 +size 4431872 diff --git a/MW4/MissionLang.dll b/MW4/MissionLang.dll index b68c088a..395c7c1e 100755 --- a/MW4/MissionLang.dll +++ b/MW4/MissionLang.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84a878268b67db49a08f8cad6bb5058636fe55091e97932b442d78a90987a1a9 +oid sha256:4c596360bac7aa2fb4020755543e3331e0859332cb5676781c1e7b87c1029aa6 size 188416 diff --git a/MW4/Resource/props.dep b/MW4/Resource/props.dep index 2fd93d62..2eb2c8c6 100755 Binary files a/MW4/Resource/props.dep and b/MW4/Resource/props.dep differ diff --git a/MW4/Resource/props.mw4 b/MW4/Resource/props.mw4 index 00e55c72..bf16352f 100755 --- a/MW4/Resource/props.mw4 +++ b/MW4/Resource/props.mw4 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e4e10ff0d9f7a88d0ccb2b62efb0710e333a0986b1a10904760d68c02829a00 -size 113470513 +oid sha256:48260cd6e432cf276d5a5f233f61d3d2e4294f5483f5b8fe4eabd2e5d23472ba +size 113471105 diff --git a/MW4/ScriptStrings.dll b/MW4/ScriptStrings.dll index 6e4545c7..ef6d51b6 100755 --- a/MW4/ScriptStrings.dll +++ b/MW4/ScriptStrings.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49792a98a4d15dce66b495c964f7039c76d1d530a0dbf5df452461a86143f20f +oid sha256:54d3c1b3046cdba46de358d6715f93957d63ce44bf282be2fd4341deef56e95b size 147456 diff --git a/MW4/autoconfig.exe b/MW4/autoconfig.exe index 88066b32..274fa5ec 100755 --- a/MW4/autoconfig.exe +++ b/MW4/autoconfig.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ec97190b8812c955680f134550ce4a937e3c9d3b95006c37d3609c3ceb4a7a0 -size 516096 +oid sha256:a560a41744d24fad365b297926ee4de89c84d8865f5869aa12d3d0b73595ae8e +size 528384 diff --git a/MW4/banner.txt b/MW4/banner.txt index 60c118a6..ccffc2a7 100755 --- a/MW4/banner.txt +++ b/MW4/banner.txt @@ -1 +1 @@ -TEST123 +CHANGEME IN YOUR MW4PRINT APPLICATION! \ No newline at end of file diff --git a/MW4/ctcls.dll b/MW4/ctcls.dll index 3cc34fcc..52c903c1 100755 --- a/MW4/ctcls.dll +++ b/MW4/ctcls.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aeadc172153339f1ba85ec86bbd5bfbb31cad1adc2ed6fc1245a527ae763089f +oid sha256:7e7aeb8d02d916a4ce0f526221ae2f3e3b1fe50c20018a2894251beccfde8d20 size 24576 diff --git a/MW4/dgvoodoo2_files/dgVoodoo.conf b/MW4/dgvoodoo2_files/dgVoodoo.conf index d70344bb..219461e0 100755 --- a/MW4/dgvoodoo2_files/dgVoodoo.conf +++ b/MW4/dgvoodoo2_files/dgVoodoo.conf @@ -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 diff --git a/MW4/mw4-help.txt b/MW4/mw4-help.txt index 93b1fc4d..54124eb8 100755 --- a/MW4/mw4-help.txt +++ b/MW4/mw4-help.txt @@ -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. diff --git a/MW4/mw4print.exe b/MW4/mw4print.exe index 6d64a67a..cc58dce1 100755 --- a/MW4/mw4print.exe +++ b/MW4/mw4print.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d98073e95fa1aca62979236d96db05549fb65b6077db8dca0a0e5e5662c2557 +oid sha256:78a0a48adc6125bab4406de62030a0948196be5476a25a3ad40933666b8fb856 size 90112 diff --git a/MW4/options.ini b/MW4/options.ini index 2e9488fc..ce36c01a 100755 --- a/MW4/options.ini +++ b/MW4/options.ini @@ -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 diff --git a/MW4/screen0000.bmp b/MW4/screen0000.bmp deleted file mode 100755 index 9b80619f..00000000 --- a/MW4/screen0000.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4fcb6b5e0f63003d151e636c1e21ff34619918f9383627320f1c7eb72031d8ae -size 1440054 diff --git a/MW4/screen0001.bmp b/MW4/screen0001.bmp deleted file mode 100755 index 9b80619f..00000000 --- a/MW4/screen0001.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4fcb6b5e0f63003d151e636c1e21ff34619918f9383627320f1c7eb72031d8ae -size 1440054 diff --git a/OPTIONS-INI.md b/OPTIONS-INI.md index 7f6cf4db..9e8ce843 100644 --- a/OPTIONS-INI.md +++ b/OPTIONS-INI.md @@ -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, diff --git a/README.md b/README.md index 358c8ae2..5984419a 100644 --- a/README.md +++ b/README.md @@ -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. --- diff --git a/RELEASE-NOTES-5.1.0b_RC1.html b/RELEASE-NOTES-5.1.0b_RC2.html similarity index 82% rename from RELEASE-NOTES-5.1.0b_RC1.html rename to RELEASE-NOTES-5.1.0b_RC2.html index 2871ae42..71cf1436 100644 --- a/RELEASE-NOTES-5.1.0b_RC1.html +++ b/RELEASE-NOTES-5.1.0b_RC2.html @@ -2,7 +2,7 @@ -BattleTech: FireStorm V5.1.0b_RC1 - Release Notes +BattleTech: FireStorm V5.1.0b_RC2 - Release Notes -

BattleTech: FireStorm — V5.1.0b_RC1

-
Release notes for pod owners  ·  25 July 2026
-

This build covers everything since the -tbaud RIO update. It is a large release: 58 changes +

BattleTech: FireStorm — V5.1.0b_RC2

+
Release notes for pod owners  ·  7 August 2026
+

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.

The most important thing to know: 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.

+

Already testing RC1? Here is what is new in RC2

+

Everything else in this document was already in RC1 and is unchanged.

+

1. Read this first -- required on Windows 10 / 11

Run set-appcompat.bat after installing

@@ -104,8 +121,13 @@ matches. It is the authoritative reference for the file format -- this page only the feature on.

The Default button restores standard settings, so you can always get back to a clean lobby.

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.


3. Cockpit and RIO hardware

Throttle zero fix

@@ -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.

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

Six rookie 'Mechs instead of four

@@ -359,7 +395,8 @@ the shipped language file was a Korean build. They now read More Details
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, +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

When display problems occur, the game now writes gos-displays.txt next to the exe listing @@ -373,6 +410,10 @@ number to use for each -- the same numbers -tident puts on the scre position 1 : device 0 -> \\.\DISPLAY1 800x600 at 0,0 [WINDOWS PRIMARY] 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.


@@ -417,12 +458,20 @@ the file before launching again.

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


11. Upgrade checklist

@@ -448,9 +503,11 @@ the file before launching again.

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. -
  • Launch and confirm the console lobby reads the new version.
  • +
  • Launch and confirm the console lobby reads V5.1.0b2. If it still shows an + older version, the resource packages did not get copied.
  • 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.
  • + 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.
  • Play one mission end to end before putting the pod back into service.
  • Optional: add [automaticmode] and [RookieMission] to options.ini if you want the new Load File button or custom rookie missions.
  • diff --git a/RELEASE-NOTES-5.1.0b_RC1.md b/RELEASE-NOTES-5.1.0b_RC2.md similarity index 81% rename from RELEASE-NOTES-5.1.0b_RC1.md rename to RELEASE-NOTES-5.1.0b_RC2.md index d3f7e7e6..85889e4c 100644 --- a/RELEASE-NOTES-5.1.0b_RC1.md +++ b/RELEASE-NOTES-5.1.0b_RC2.md @@ -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 ` | 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. diff --git a/testing-checklist-5.1.0b1.txt b/testing-checklist-5.1.0b1.txt deleted file mode 100644 index 47c7df71..00000000 --- a/testing-checklist-5.1.0b1.txt +++ /dev/null @@ -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 - diff --git a/testing-checklist-5.1.0b_RC2.txt b/testing-checklist-5.1.0b_RC2.txt new file mode 100644 index 00000000..af8f8da1 --- /dev/null +++ b/testing-checklist-5.1.0b_RC2.txt @@ -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 = " 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) +