Files
firestorm/RELEASE-NOTES-5.1.0b_RC3.md
T
c0daa2d920 Rewrite -tident: it painted one screen and left the rest blank
Reported from a four-monitor pod: -tident filled the main screen green and did
nothing to the other three.

The first version opened each DirectDraw device with DDSCL_NORMAL and drew on
that device's primary surface. Under DDSCL_NORMAL a secondary device's primary
surface is not that monitor's framebuffer - it either fails to create or
resolves to the desktop primary - so every device painted the SAME screen, each
over the last. Green is acrFill[1], so device 1 painted last and devices 2 and 3
failed outright, which matches the report exactly.

Now does what the Windows Identify button does: one borderless topmost GDI
window per monitor, positioned from the rectangle that device's HMONITOR
reports, with a real message pump so the windows actually receive WM_PAINT.
Nothing takes exclusive mode and no display mode is changed, which was the point
of the original design and still holds.

Two things fall out of the rewrite:

* Devices resolving to the same rectangle are now grouped behind one window
  labelled with both numbers ("1 & 2") instead of overpainting each other. That
  was a parked item in CLAUDE.md - it happens when a driver presents one monitor
  as two devices, which is common on a single-screen test PC.
* A device reporting no HMONITOR is the primary display driver alias and now
  falls back to the primary monitor rectangle rather than being lost.

gos-displays.txt gains a painted size/position line per monitor, a
"shares a monitor with device N" line, and a summary count, so a failure to show
anything is visible in the log instead of silent.

Docs: this matters because RC2 told pod owners to run -tident and it did not
work. Added to the RC3 change list, corrected the now-obsolete known issue about
single-monitor overpainting, and rewrote checklist section 12 to lead with the
regression - all four monitors must be covered.

Co-authored-by: Claude Opus 5 (Anthropic) <noreply@anthropic.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
2026-08-09 17:04:22 -05:00

639 lines
29 KiB
Markdown

# BattleTech: FireStorm -- V5.1.0b_RC3
**Release notes for pod owners**
This build covers everything since the `-tbaud` RIO update. It is a large release: 83 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 RC2? Here is what is new in RC3
Everything in this list is a fix -- none of it needs configuring. The console lobby now reads
**`V5.1.0b3`**; use that to confirm a pod actually received the new build.
- **`-tident` now actually works.** In RC2 it painted a single coloured rectangle on the main
screen and nothing on the other monitors, so it could not be used for what it was added for.
See section 4.
- **Damage paper dolls corrected on 22 'Mechs.** The external MFD and Radar damage displays
were showing mirrored or misaligned zones. See section 5.
- **Targeting a Zeus showed an Annihilator.** Fixed, along with two other 'Mechs whose target
picture was missing. See section 4.
- **Flying a Behemoth II could stop the game outright.** Fixed. See section 5.
- **High Explosive charges can now actually be fired.** See section 5.
- **Three long-standing 'Mech data faults corrected** (Cauldron Born, Hellspawn, Sunder).
See section 5.
- **`mw4print -debug`** for diagnosing printer problems. See section 7.
> **This build changes artwork as well as the executable.** Copy the whole folder when you
> upgrade -- see section 11. An old `hsh\` folder with a new `MW4.exe` gives wrong damage
> displays.
### What was new in RC2
- **`-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.
---
## 1. Read this first -- required on Windows 10 / 11
### Run `set-appcompat.bat` after installing
A new one-click tool ships in your install folder. **Double-click `set-appcompat.bat`** once,
after copying the game to its final location.
FireStorm renders in 16-bit colour, and modern graphics cards no longer offer 16-bit display
modes. Windows can emulate them, but only if the game is registered for it -- and **that
registration is tied to the exact folder the game sits in**. Copying or moving an install
silently loses it.
Without it, the game fails to go fullscreen and reports:
> *"Another application is preventing use of full screen mode."*
That message is misleading. It is not another application. It is this registration missing.
If you see it, run `set-appcompat.bat` and restart the game.
- Run it again any time you **move, copy or reinstall** the game to a different folder.
- Right-click -> **Run as administrator** to apply it for every Windows account on the pod.
- It reports what it changed and takes effect on the next game launch. No reboot needed.
---
## 2. Multiplayer
### 16 pilots plus a cameraship now launch correctly
Previously, a full 16-pilot game with a cameraship connected would silently fail to launch --
you pressed launch and nothing happened, with no error. Fixed. A cameraship no longer consumes
one of the 16 pilot slots.
**No configuration needed.** This applies automatically.
### Load File -- set up a whole match from a file
The console lobby can now load an entire match configuration -- game type, map, mission options
and all 16 player slots -- from a single file, instead of setting everything by hand.
**To enable it,** edit `options.ini` in your game folder -- the same folder that contains
`MW4.exe`, for example `C:\MW4\options.ini` -- and add:
```ini
[automaticmode]
automaticmode=1
automaticfile=matchsetup.ini
```
**Both keys are required:**
| Key | What it does |
|---|---|
| `automaticmode` | `1` shows the **Load File** button in the console lobby. Any other value, or the key missing entirely, hides the button and the lobby behaves exactly as before. |
| `automaticfile` | The match configuration file the button loads. If this key is missing, or points at a file that does not exist, the button appears but does nothing when pressed. |
`automaticfile` can be either a plain file name, which is read from the game folder next to
`MW4.exe` (so `automaticfile=matchsetup.ini` reads `C:\MW4\matchsetup.ini`), or a full path if
you prefer to keep your match files somewhere else
(`automaticfile=C:\PodConfigs\friday-night.ini`).
- Full file format reference: **`BTFrstrm/autoconfig-file-spec.html`**
- Two ready-made examples -- copy one into your game folder and point `automaticfile` at it:
**`BTFrstrm/test-ffa-coliseum.ini`** and **`BTFrstrm/test-team-koth-centralpark.ini`**
> **Read `BTFrstrm/autoconfig-file-spec.html` before writing your own match files.** Open it in
> any web browser. It documents every section and key, the accepted values for each, what happens
> when a key or section is left out, and complete worked examples for both free-for-all and team
> matches. It is the authoritative reference for the file format -- this page only covers turning
> 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 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
The throttle now reports a true zero position and clamps negative values correctly. Previously
the zero point could be skipped.
**Applies automatically.**
### `-tbaud` -- support for high-speed replica RIO boards
If you are running a **replica RIO cockpit board with a faster UART**, you can now set the COM1
speed without changing anything else about how the board talks to the game:
```
MW4.exe -tbaud 115200
```
Accepts 9600 to 921600. **Leave it off** and the game uses the original speed, exactly as before --
existing original RIO boards need no change and should not use this switch.
**Whether a particular rate actually works is a hardware question, not a software one.** The
game will happily set any rate in that range, but both ends have to support it: the serial
UART in the pod PC, and the RIO or replica RIO board itself. If a rate misbehaves -- garbled
input, dropped buttons, no response -- step down to a lower one.
This switch only changes the speed. The wire protocol is untouched. (The separate `-trio 1`
switch changes the whole protocol and is *not* what you want for a replica board.)
---
## 4. Displays and MFDs
### Split MFD mode -- two separate 640x480 MFD monitors
New display mode **`-tmfds 4`**, for pods using **two separate 640x480 monitors** for the MFDs
instead of one wide spanned display.
```
MW4.exe -tmfds 4
```
Four displays total: main, radar, left MFD, right MFD. The original spanned modes (`-tmfds 1`
and `3`) are unchanged and remain the default for existing pods.
### Split MFD stutter -- fixed
Early split-MFD builds had a constant rhythmic stutter across the whole game. Fixed. The two MFD
panels no longer force the graphics card to stall every frame cycle.
### Required dgVoodoo2 setting for any multi-display mode on Windows 10/11
**On Windows 10 and 11, dgVoodoo2 is required for every mode that uses more than one display.**
That means all of the MFD modes -- the original spanned display (`-tmfds 1` and `-tmfds 3`) as
well as the new split mode (`-tmfds 4`) -- **and cameraship mode**, which drives two monitors
without using MFDs at all.
**Console mode is the only configuration that does not need it**, because it uses a single display.
The deciding factor is the number of displays, not which feature you are using: anything that
lights up a second monitor runs into the same Windows limitation. On Windows XP none of this
was needed.
> **dgVoodoo2 is not part of the build, and must NOT be installed on Windows XP pods.**
> XP uses the graphics support built into Windows and needs nothing extra -- adding dgVoodoo2
> there will break it. It is a per-machine prerequisite that you install yourself, on
> **Windows 10 and 11 pods only**. If your fleet is mixed, set it up per machine, not as part
> of the game folder you copy around.
In the dgVoodoo2 control panel, on the **General** tab, set:
> **Scaling mode: `Stretched, Keep Aspect Ratio`**
This is not optional and not cosmetic.
- With **`Stretched`** (plain), the MFD monitors **silently stay on the Windows desktop** while
the main and radar screens go black. There is no error message of any kind. It simply does not work.
- With **`Stretched, Keep Aspect Ratio`**, all panels come up correctly.
The same setting also gives the correct picture geometry on 16:9 monitors. FireStorm renders in
4:3, so on a widescreen display it is either stretched out of shape or shown correctly with black
bars down the sides. Keep-aspect gives you the correct shape -- circles stay round and the
targeting reticle is accurate.
> **Why dgVoodoo2 is still required:** we tested running the multi-monitor MFD modes on Windows 10
> with no dgVoodoo2 at all, using every available configuration. Modern Windows only permits one
> display at a time to take exclusive fullscreen control, so the extra MFD panels are refused.
> Windows XP allowed it; Windows 10 does not. dgVoodoo2 works around this. There is no setting
> or switch that avoids it.
### `-tident` -- find out which monitor is which
Before using `-tmon`, use this to find out what numbers to type:
```
MW4.exe -tident
```
Every monitor fills with a colour and shows, in large text, the number to use for it. Something
like:
```
3
use 3 in -tmon
device 2 currently: main
```
Walk the pod, write down what each screen says, then set `-tmon` in the order
**main, radar, MFD 1, MFD 2**. The game exits on its own when the time is up -- it does not start
a mission, and it does not change any display setting. The display lasts 20 seconds by default;
`-tident 45` gives you longer, and anything from 3 to 120 seconds is accepted.
> **Why this exists.** The monitor numbers Windows shows in Display Settings **cannot be read by
> any program** -- Windows simply does not make them available. They often happen to match the
> numbers `-tmon` wants, but on some machines they do not, and there is no way for the game to
> tell the difference. This is the same reason Windows gives you an *Identify* button instead of
> just telling you. `-tident` is the game's own Identify.
**Do not read monitor numbers off the Windows Display Settings screen and type them into
`-tmon`.** That is the single most common way to get a wrong or non-working display setup, and
it can look like a hardware fault. Use `-tident`.
### `-tmon` -- fix monitors coming up in the wrong order
If your panels appear on the wrong physical monitors, you can assign them explicitly, in the
order **main, radar, MFD 1, MFD 2**:
```
MW4.exe -tmfds 4 -tmon 1,2,3,4
```
Use the numbers **`-tident` showed you** (see above), not the numbers in Windows Display Settings.
Use `0` in any position to leave that one on automatic -- `-tmon 2,1,0,0` swaps only main and radar.
**Leave the switch off entirely and everything is detected automatically**, which is correct on
most pods.
**Which positions apply depends on the MFD mode:**
| Position | Display | `-tmfds 4` (split) | `-tmfds 1` / `-tmfds 3` (spanned) |
|---|---|---|---|
| 1st | Main | applies | applies |
| 2nd | Radar | applies | applies |
| 3rd | MFD 1 | applies | ignored |
| 4th | MFD 2 | applies | ignored |
In the spanned modes the first two positions work normally, so you can still correct main and
radar. The 3rd and 4th positions are accepted but have no effect, because the spanned modes
drive both MFDs from a single wide display rather than two separate ones.
**The spanned MFD display itself cannot be assigned with `-tmon`.** It is picked automatically
as the first display that reports a 1280x480 mode -- a distinctive signature that a spanned
MFD pair produces and ordinary monitors do not, so it normally lands on the right one. If you
ever need to force it, ask and it can be added.
If a display comes up in the wrong place, check `gos-displays.txt` next to the game (see
section 8). It lists every display found, which role each was given, and whether each `-tmon`
position was accepted or ignored.
### Two panels on one monitor -- now reported
If `-tmon` accidentally puts two things on the same monitor, the second one cannot start: the
first already has that display. Previously this produced a confusing DirectDraw error naming
neither of them. `gos-displays.txt` now says so plainly:
```
*** CLASH: main and mfd2 are BOTH on device 0 ***
```
### Panels are now released correctly when the display mode changes
A fault that could stop the MFDs working after the game changed display mode, or recovered from
another program taking the screen. The panels were being re-opened without the previous ones
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.
### The target picture on the MFD showed the wrong 'Mech
The small image of your current target had room for only 64 'Mechs, one short of the roster. The
last one wrapped around to the start of the list, so **targeting a Zeus displayed an
Annihilator** -- a clean, convincing picture of the wrong 'Mech, which is why it was never
reported as a fault. The **Assassin II** had no picture at all.
Both fixed, with room for future 'Mechs. **Applies automatically.**
If your graphics card refuses the larger image store the game falls back to the old behaviour
rather than losing every target picture, and records which it used in `gos-displays.txt`:
```
[mfd] target atlas 1024x2048, 128 tiles, 65 chassis
```
If that line instead says the larger size was refused, the Zeus fault will still be present on
that machine -- please report it, as it has not been seen on any card tested so far.
---
## 5. 'Mechs and content
### Six rookie 'Mechs instead of four
The console lobby's default rookie 'Mech rotation now includes the **Archer** and **Warhammer**
alongside the original four. Right-click randomising picks from all six.
### Corrected loadouts
- **Battlemaster (Inner Sphere)** -- now carries its proper stock loadout: PPC, 6 medium lasers,
2 machine guns, and an SRM-6. It previously had only a single medium pulse laser.
- **Battlemaster 2C (Clan)** -- ER PPC, 6 ER medium lasers, 2 Clan Gauss rifles, Clan Streak SRM-6.
- **Behemoth / Behemoth II** -- Gauss rifles moved into the main weapon group so they fire with
the rest of the primary weapons.
### Restored missing artwork
Several 'Mechs were missing their MFD and cockpit display images, which showed as blank panels
in game. Restored: **Assassin II, Behemoth, Behemoth II, Black Hawk, Longbow, Solitaire, Victor**,
plus two missing lobby decals.
### Damage displays corrected on 22 'Mechs
The external MFD and Radar damage figures -- the outline of your 'Mech that changes colour as
sections take damage -- were wrong on a large part of the roster. Two faults ran through them:
- **The figure was mirrored.** Damage to the 'Mech's right side lit up on the wrong side of the
display.
- **Zones did not line up with the artwork.** Pieces floated in empty space, and leg outlines ran
past the feet.
Separately, the **Rifleman** and **Battlemaster** had been using another 'Mech's layout entirely
(the Mad Cat's and the Atlas's), so their displays never matched their own artwork.
Corrected on: Annihilator, Archer, Ares, Argus, Assassin II, Atlas, Avatar, Battlemaster,
Battlemaster IIC, Behemoth, Behemoth II, Black Hawk, Fafnir, Flea, Gladiator, Hellspawn, Kodiak,
Longbow, Rifleman, Sunder, Victor and Warhammer. The remaining chassis were already correct and
are untouched.
**Applies automatically**, but note the artwork travels as loose files, so the pod must get a
full deployment and not just a new `MW4.exe`.
### High Explosive charges now fire
High Explosives could be fitted in the mechlab but never fired -- they were being given zero
rounds. They are ordinary one-shot weapons: assign them to a weapon group and pull the trigger.
They are **not** set off by ejecting.
Each charge does about 100 damage in a 30 metre radius, and about 200 damage to your own centre
torso. Put several in the same group and use Group Fire to set them all off at once.
Side effect of the same fix: the **NARC Beacon** shows its ammunition count in the mechlab again.
> If you have a saved variant that already carries a High Explosive, remove and refit the charge
> once, in case it was saved with no rounds.
### Three content faults corrected
Long-standing errors in the 'Mech data files, found while examining another build:
- **Cauldron Born** -- its torso twist radius referred to a setting that does not exist, so the
engine quietly substituted a default. The correct value is now stated outright. **Behaviour is
unchanged**; the file simply now says what the game was already doing.
- **Hellspawn** and **Sunder** -- each had a malformed heat-sink entry. The game tolerated it, but
it would have broken any tool that reads these files strictly.
### Mechlab label correction
The mechlab turn rate now reads **"Turn Rate (Top Speed Rad/Sec)"**, which is what the number
actually means. It previously claimed degrees per second, which was wrong.
---
## 6. Arcade / console mode
### Configurable Rookie Mission
The quick-launch Rookie Mission was previously fixed in place. All of its settings can now be
changed from the same `options.ini` in your game folder, next to `MW4.exe`.
This is the mission the console loads when it opens, and the one restored when **Default** is
clicked in the lobby.
**Every entry is optional.** Omit the section entirely and you get exactly the previous built-in
behaviour. The block below is ready to paste into `options.ini` as-is: every setting line is
commented out with `//`, so pasting it changes nothing until you uncomment the lines you want.
```ini
[RookieMission]
// Default mission loaded when the console opens and when "Default" is clicked.
// All entries are optional - omit any to keep the hardcoded built-in default.
//
// MissionName - exact display name as it appears in the map dropdown
// default: ScarabStronghold - Attrition
// GameType - 0-based index into the game-type dropdown (2 = Attrition)
// default: 2
// TimeLimit - time limit in minutes; -1 means use the server's default time
// default: -1 (uses g_nTimeList_Value, currently 7 min)
// Visibility - 0=Clear 1=Light Fog 2=Medium Fog 3=Heavy Fog
// Weather - 0=Off 1=Rain
// TimeOfDay - 0=Day 1=Night
// Radar - 0=Novice 1=Off 2=Bars 3=Unlimited
// HeatOn - 0=Off 1=On
// FriendlyFire - 0=Off 100=Full (percentage)
// SplashDamage - 0=Off 1=On
// UnlimitedAmmo - 0=Off 1=On
// WeaponJam - 0=Off 1=On
// AdvanceMode - 0=Off 1=On
// ArmorMode - 0=Off 1=On
//
// Example: uncomment and edit lines below to customize
//MissionName=ScarabStronghold - Attrition
//GameType=2
//TimeLimit=-1
//Visibility=0
//Weather=0
//TimeOfDay=0
//Radar=0
//HeatOn=0
//FriendlyFire=0
//SplashDamage=0
//UnlimitedAmmo=1
//WeaponJam=0
//AdvanceMode=0
//ArmorMode=0
```
Two worth knowing:
- **`MissionName`** must match the mission's display name **exactly** as it appears in the map
dropdown, including spacing and the ` - ` before the game type.
- **`TimeLimit=-1`** means "use whatever time limit the server is currently set to" rather than
forcing a fixed value.
---
## 7. Match printer (mw4print) -- version 2.0
### Custom banner text
The line printed at the bottom of each score sheet is no longer fixed to `WWW.MECHJOCK.COM`.
Set your own via **File -> Banner Setting...**. It is saved to `banner.txt` next to the printer,
so you can also edit it directly.
### Database export (included, not yet field-tested)
mw4print 2.0 can export match results -- scores, kills, player-versus-player results -- to an
external **MySQL** database after each print job, for league tables or long-term stats.
Configure via **File -> Database Settings (Ctrl+D)**, or the `[MySQLExport]` section of
`mw4print.ini`. The table layout is documented in `db_schema.sql`.
> **WARNING: this feature has not yet been tested against a live database server.** It is off unless you
> configure it, and printing works normally without it. If you try it, please report back.
### Diagnostic logging -- `-debug`
```
mw4print.exe -debug
```
Writes a step-by-step log of what the printer is doing, including where it is looking for its
files. Use it when a score sheet comes out wrong or a print job fails silently. `/debug` works
too. **Off unless you ask for it**, and printing is unaffected when it is on.
---
## 8. Quality of life
### `mw4.exe -help`
Running `MW4.exe -help` now opens a **complete reference for every command line switch** -- around
76 of them, grouped by category with descriptions. It opens in Notepad and the game does not start.
### English error dialogs
The crash and error dialog buttons previously appeared as `???` boxes on some systems, because
the shipped language file was a Korean build. They now read **More Details / Continue / Exit**.
### Performance measuring -- `-fps`
For diagnosing stutter or verifying a pod is running smoothly:
```
MW4.exe -fps
```
Writes `gos-fps.txt` next to the game with a per-second breakdown -- average frame rate, the
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
every monitor it found, which role each was assigned, and the exact reason any panel failed to
start. Previously such failures were completely silent. Include this file with any display fault report.
The log now follows the whole start-up sequence in order: what Windows reports is attached, what
the game found, how it matched the two up, which display it chose for each role and why, and what
each `-tmon` position did. Near the end it prints the monitors in left-to-right order with the
number to use for each -- the same numbers `-tident` puts on the screens:
```
Desktop arrangement, left to right (compare with Display Settings):
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.
---
## 9. New command line switches at a glance
| Switch | Purpose | If you leave it off |
|---|---|---|
| `-tmfds 4` | Two separate 640x480 MFD monitors | Existing MFD mode unchanged |
| `-tident [secs]` | Show each monitor's number on the monitor itself, then exit. Use this to work out what to put in `-tmon` | Game starts normally |
| `-tmon a,b,c,d` | Force monitor order: main, radar, MFD1, MFD2. Positions 3 and 4 apply only to `-tmfds 4` | Automatic detection |
| `-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
- **Any multi-display mode requires dgVoodoo2 on Windows 10/11** -- every MFD mode (spanned
`-tmfds 1` / `-tmfds 3` and split `-tmfds 4`) and cameraship mode. Console mode, using a
single display, is the only exception. Scaling must be set to `Stretched, Keep Aspect Ratio`.
dgVoodoo2 works around a limitation on exclusive full-screen use of multiple displays on
platforms after Windows XP. It may be possible to fix this in a future release.
- **The MySQL export in mw4print has not been tested against a live server.**
- **The game renders in 4:3 only.** There is no widescreen mode. On 16:9 monitors, use
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.
- **If two device numbers land on one monitor, `-tident` now says so** rather than painting one
number over the other. The monitor shows both numbers, e.g. `1 & 2`, and either may be used in
`-tmon`. This happens when a driver presents one monitor to the game as two devices, which is
common on single-screen test PCs and does not occur on a pod.
---
## 11. Upgrade checklist
1. Back up your current install.
2. Copy in the new build. **Copy the whole folder, not just `MW4.exe`.** This build changes the
damage display artwork in `hsh\`, which is loose files rather than packaged data, and three
of the resource packages. A 'Mech will show the wrong damage figure if the executable and the
artwork come from different builds.
3. **Double-click `set-appcompat.bat`** (as administrator if the pod has multiple accounts).
4. **On Windows 10/11, confirm dgVoodoo2 is installed and its scaling mode is
`Stretched, Keep Aspect Ratio`.** Required for **any** mode that uses more than one
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 **`V5.1.0b3`**. 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.