At first the bad news: The game can’t be played native under Linux. There are some possibilities to get it run using Wine but that’s some kind of gambling.
There are also many OpenSource-variants like OpenRa or FreeRa (discontinued?) but thats not the same as playing the real game.
So the best way (for me) is playing Red Alert2 using the virtualization-software Qemu with the guest-os Windows-XP.
But hey, why Windows-XP? This operating system shouldn’t be used anymore because of missing updates and therefore many security-holes will appear in the future.
That’s right, but if you’re using Windows-XP only to play some older games it shouldn’t be any problem, even if you disallow access to the internet from the machine. Windows-XP is also the best solution to play those older games. Not only Red Alert 2. Also Stronghold, Sim-City, Freeserf, … can be perfectly played under XP.
Another good reason is the price. You’ll get cheap copies of Windows-XP using eBay or Amazon.
I don’t explain how to install Windows-XP or Red Alert 2 in a virtual environment as this could be found using google. Instead i will show you the perfect command-line which should be used:
kvm -smp 2 -m 4096M -vga cirrus -cpu host -drive file=disk.qcow2,cache=none -boot order=d -net nic,model=rtl8139 -np -cdrom /tmp/ra2.iso -soundhw ac97
Be sure to use the cirrus vga-adapter. Other values like std or vmware won’t work or you’ll get some blank screens when starting Red Alert 2 (But you can hear some sound at least ;-))
Also take care about the iso-file which is used here as /tmp/ra2.iso. The original cd’s can’t be used as they will be not detected by the copyright-protection of Westwood (But it seem’s that qemu can’t forward all low-level calls to the cdrom-driver of linux) So you have to rip the iso’s from the original cd’s. But here’s another problem: The cd’s can’t be easily ripped using dd or similiar commands because of another copyright-protection of the cd itself. You will have to use some special kind of ripping-software like Alcohol or similar.
Another problem is sound-jittering. You can try to decrease the screen resolution of the guest but that won’t work in all cases. A good way will be the use of an external usb-soundcard which will be only used by the virtual guest.
An external usb-soundcard can be included in qemu using the following command-line:
kvm -smp 2 -m 4096M -vga cirrus -cpu host -drive file=disk.qcow2,cache=none -boot order=d -net nic,model=rtl8139 -np -cdrom /tmp/ra2.iso -soundhw ac97 -usb -device usb-host,hostbus=4,hostaddr=4
You can get your values for hostbus and hostaddr using the lsusb-command of linux (So please don’t use the values of my configuration!)
The output of lsusb will be something like:
Bus 004 Device 004: ID 0480:a006 Toshiba America Info. Systems, Inc.
Bus 004 Device 003: ID 0bc2:5031 Seagate RSS LLC FreeAgent GoFlex USB 3.0
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 004: ID 03f0:134a Hewlett-Packard
Bus 003 Device 003: ID 046d:c312 Logitech, Inc. DeLuxe 250 Keyboard
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
The first values (Bus and Device) are the values which have to be used as hostbus and hostaddr.
Now it’s time play a game and i hope you’ll enjoy playing some classic games from the last decade(s).