This patch addresses an issue in MechWarrior 2: Mercenaries where, at frame rates higher than 45.5 FPS, jump jet fuel does not recharge correctly. This is the same problem that affects all DOS versions of MechWarrior 2. The original fix was created for MechWarrior 2: 31st Century Combat v1.1 by Alex Page (available here), and later I adapted it for Ghost Bear's Legacy (see here).
This version adapts the same concept for MechWarrior 2: Mercenaries v1.06 for DOS, as the Windows 95 version suffers from numerous compatibility issues on modern systems (Windows 8 and newer), including crashes and unplayability. Additionally, MechVM no longer functions reliably on Windows 8 and later (see details here and here).
Given these limitations, the DOS version of MechWarrior 2: Mercenaries also benefits from this treatment.
Download .IPS Patch
Apply using Lunar IPS
If you are using a v1.0 or v1.05 CD, you must first update your installation to v1.06 before applying the patch.
To check your version, open the PRODUCT.INI
file located either at the root of your CD or inside the SPLASH
directory:
v1.0 CD
ProductName=Mercenaries
ProductMajorVersion=1
ProductMinorVersion=0
v1.05 CD
ProductName=Mercenaries
ProductMajorVersion=1
ProductMinorVersion=05
Upgrade Downloads
Unlike 31st Century Combat and Ghost Bear's Legacy, Mercenaries’ MW2.EXE
is compressed using Causeway 3.25 and must be unpacked before patching.
- CW349.EXE (CauseWay 3.49) — run in DOS (tested in DOSBox-X)
- UNPCWC349.EXE (CauseWay 3.49 Unpacker) — run in Windows CMD (tested on Windows 11 x64)
-
Update your Mercenaries installation to v1.06 in a DOSBox or real DOS environment.
-
Copy
CW349.EXE
andUNPCWC349.EXE
into your Mercs installation folder (e.g.,C:\MERCS\
). -
In DOSBox or real DOS, back up your original executable:
copy MW2.EXE MW2.BAK
-
Upgrade the Causeway stub:
CW349 -b +u MW2.EXE
-
In Windows CMD, unpack the upgraded EXE:
UNPCWC349 MW2.EXE
This will create a file named
MW2.x
(approx. 2 MB).
Alternatively, you can dragMW2.EXE
ontoUNPCWC349.EXE
in File Explorer. -
Delete or rename
MW2.EXE
, then rename the unpackedMW2.x
toMW2.EXE
. -
Finally, apply the
.IPS
patch using Lunar IPS.
The patch intercepts the jump jet fuel logic at a specific hook offset, calls external functions to retrieve elapsed time and record refuel ticks, and then returns to the game’s normal fuel accumulation logic.
; Insert at 0x89A57 in MW2.EXE
START:
PUSH 0x82
CALL 0xFFFFCC88 ; Get elapsed ticks into EAX
ADD ESP, 0x4
CMP EAX, 182 ; Filter out huge values
JA TOO_BIG
SHR EAX, 0x2 ; Divide by 4
JZ RETURN ; If 0, skip
PUSH EAX
PUSH 0x82
CALL 0xFFFFCCC8 ; Record last refuel tick
ADD ESP, 0x4
POP EAX
RETURN:
JMP 0xFFFB805F ; Jump to normal fuel update logic
TOO_BIG:
PUSH 0x82
CALL 0xFFFFCCC8 ; Record last refuel tick
ADD ESP, 0x4
XOR EAX, EAX
JMP RETURN
; Overwrite at 0x41AA9 in MW2.EXE
JMP 0x47FAE
Note: Offsets assume an unpacked MW2.EXE
(v1.06) after applying the Causeway unpacking process above.
This patch preserves the original fuel-update logic with only minor adjustments to support MechWarrior 2: Mercenaries. The mechanism remains unchanged—only the addresses of key external functions are updated. This allows the game to behave as intended while resolving the jump jet fuel issue that occurs at high frame rates.
THIS DOCUMENT AND THE PATCH WITHIN ARE PROVIDED WITHOUT WARRANTY.