Thursday, February 11, 2010

Mass Effect 2 Runs in Wine in Ubuntu Linux

Mass Effect 2 using Linux in Wine



Get Wine



So I got mass effect 2 working in wine. Man is it a great game. To get it to work in wine:

go here and download wine (latest version as of now 1.1.38) http://sourceforge.net/projects/wine/files/Source/wine-1.1.38.tar.bz2/download

(note I would recommend 1.1.38 if you want to use the patches below)

extract and enter the directory in the terminal. Now we need to run the configure script:

./configure


Or to speed up compilation:

./configure --disable-tests


Which will skip compiling the wine test suite which generally you won't need.

Patching



Two patch files are located at:
http://bugs2.winehq.org/attachment.cgi?id=15638 for the mouse warping

http://bugs.winehq.org/attachment.cgi?id=26032 for crashes (I didnt seem to need this patch)

Next, you will need to apply some patches. There is one for crashing, and another to fix the mouse warping. I don't have these on hand at the moment. I couldn't get my mouse warping to work properly, so I edited mouse.c under dlls/dinput/ and made it so mouse button 3 would toggle mouse warp (on / off) which is a pain but makes the game more playable. To apply patches to a source, under the source tree, type:

#patch -p1 < NAMEOFPATCHFILE


Afterwards you can compile as shown below.

Compile


Ensure that you have XML support compiled in, as well as openal. You can determine this through the final output of the configure script. If you don't have the xml and openal dev packages, install them with your favourite package editor.


make
sudo make install


Again, an interesting way to speed up compilation on a multi core machine is to use:


make -j 4
sudo make install


You can replace "-j 4" with the number of processors you have (I have a quad core).

Finally



now run "winecfg" and set up a virtual desktop (I have to using nvidia latest binary driver geforce 9600).

Also, we need to install packages with winetricks to get this to work


wget http://www.kegel.com/wine/winetricks
sh winetricks d3dx9 d3dx10 vcrun2005 physx


Now run the installer, and finally run the game. I am able to play on full settings with 1900x1080 resolution :D

Enjoy!

4 comments:

  1. Hi,

    I've been trying to make mouse warping work properly in Mass Effect 2 with no luck. In your post you mention that you modified dinput.dll to have button 3 toggle mouse warp. I think this is a great solution. Could you please share what you changed in the code to achieve this?

    Thanks!

    Jure

    ReplyDelete
  2. Hi MrM,

    I edited under dlls/dinput/mouse.c. Look at the function
    dinput_mouse_hook where it deals with middle mouse button. Have that toggle so that This->warp_override == WARP_FORCE_ON evaluates to true. Or what I did is have it toggle each time it is pressed.

    if(This->warp_override == WARP_FORCE_ON) {
    This->warp_override = FALSE;
    } else {
    This->warp_override = WARP_FORCE_ON;
    }

    There is a much better method available. Have a look at patches that warp the mouse as it approaches the edge of the screen.

    ReplyDelete
  3. Hello, this is great tutorial on how to install mass effect, but I don't understand where and how I need to patch the patch file.and how I can set up a virtual desktop when i run winecfg

    thanks in advanced

    ReplyDelete
  4. To set up a virtual desktop, type winecfg in a terminal and press enter. It should bring up a config screen. Go to "Graphics" tab, and you will see "Emulate a virtual desktop" checkbox.

    ReplyDelete