Warcraft II

Growing up, Warcraft II was one of my favorite games. I used to play it with my friend all the time over a modem connection; "Mom, don't pick up the phone! It's Erik connecting."

Erik, if you're out there - the allies shall not be denied!

I've gotten the itch to play multiplayer again and I have two new people to share the game with, my boys. Below are the steps that I took to get multiplayer up and running on Fedora and Windows 11. A lot of information online is outdated (using a wine32 prefix) or is slowly getting lost to time.

Note: I used the version from GOG (unfortunately, no longer available) and not my original cd-rom/ISO. GOG bundles its own copy of IPXWrapper. If you're not using the GOG install, you will need to setup IPXWrapper yourself.

Fedora/Linux

Prerequisites:

  1. wine and winetricks installed
  2. ipxemu
  3. cnc-ddraw
  4. Warcraft II installer from GOG

Wine Configuration

The latest versions of Wine no longer support a wine32 prefix. Instead Wine now uses a WoW64 mode.

Create a separate Wine prefix:

WINEPREFIX=~/.wine-wc2 winecfg

I stuck with Windows 10 for the Windows version and left the other defaults as is.

Install

Under the wine-wc2 prefix, install Warcraft II.

WINEPREFIX=~/.wine-wc2 wine setup_warcraft_2_*.exe

ipxemu

After installing Warcraft II:

  1. Make a backup of wsock32.dll and Warcraft II BNE.exe.
  2. Extract ipxemu-1.0.4.zip and copy wsock32.dll into the folder where Warcraft II was installed, replacing the existing wsock32.dll.
  3. Copy warcraft_2_bne_bugfix.exe from the ipxemu "tools" folder into the Warcraft II folder and run the exe to patch Warcraft II BNE.exe.
cd ~/.wine-wc2/drive_c/GOG\ Games/Warcraft\ II\ BNE/
WINEPREFIX=~/.wine-wc2/ wine warcraft_2_bne_bugfix.exe 

Apparently Warcraft II shipped with a "non-compliant" implementation of IPX. The bug fix from ipxemu patches the executable to be compliant.

I did not run into any issues using wine to run the bugfix. If you do run into issues, you can use a Windows machine to create the patched exe.

cnc-ddraw

cnc-ddraw is necessary for Warcraft II to utilize the full display. It replaces the DirectDraw API used by Warcraft II with a re-implementation using OpenGL/Direct3D. When Warcraft II renders at 640x480, cnc-ddraw will upscale it to the full display resolution using OpenGL.

In the folder where Warcraft II was installed:

  1. Make a backup of ddraw.dll.
  2. Extract cnc-ddraw-experimental-release and copy all the extracted contents into the Warcraft II folder.
  3. Run cnc-ddraw config.exe to configure cnc-ddraw.
cd ~/.wine-wc2/drive_c/GOG\ Games/Warcraft\ II\ BNE/
WINEPREFIX=~/.wine-wc2/ wine cnc-ddraw\ config.exe 

I enabled "Maintain aspect ratio".

Running

Once everything is installed, patched, and replaced, run Warcraft II making sure to specify wine to use the patched wsock32 and ddraw dlls. You will need to use Warcraft II BNE.exe to launch the game, not the Warcraft II BNE_dx.exe (GOG enhanced version). The GOG enhanced version is not patched by ipxemu. You will get stuck trying to connect to an IPX multiplayer game.

cd ~/.wine-wc2/drive_c/GOG\ Games/Warcraft\ II\ BNE/
WINEPREFIX=~/.wine-wc2/ WINEDLLOVERRIDES="wsock32=n,ddraw=n" wine Warcraft\ II\ BNE.exe

Windows

Prerequisites:

  1. ipxemu
  2. Warcraft II installer from GOG

ipxemu

After installing Warcraft II:

  1. Make a backup of wsock32.dll and Warcraft II BNE.exe.
  2. Extract ipxemu-1.0.4.zip and copy wsock32.dll into the folder where Warcraft II was installed, replacing the existing wsock32.dll.
  3. Copy warcraft_2_bne_bugfix.exe from the ipxemu "tools" folder into the Warcraft II folder and run the exe to patch Warcraft II BNE.exe.

Reminder: you will need to use Warcraft II BNE.exe to launch the game, not the Warcraft II BNE_dx.exe (GOG enhanced version). The GOG enhanced version is not patched by ipxemu. You will get stuck trying to connect to an IPX multiplayer game.

Windows Firewall

If you still run into connectivity issues, make sure Windows Firewall has allowed Warcraft II BNE.exe. Depending on your network setup, you should be prompted the first time running the game or you may need to manually add an exception.