Manual installation and launching the game.
What does not
The game can not load, freezes with an error that says:
Direct3D returned an error: D3DERR_INVALIDCALL! The application will now terminate.
CD detection of second disk failed in install with 4 cd version for me.
What was not tested
The game play.
Would be wonderfull if someone could find solution for this problem.
|Operating system||Test date||Wine version||Installs?||Runs?||Used|
|Current||Ubuntu 12.04 "Precise" i386 (+ variants like Kubuntu)||Nov 17 2012||1.5.17||Yes||No||Garbage||an anonymous user|
|Show||Arch Linux x86_64||Jun 26 2012||1.5.7||Yes||No||Garbage||Emily Marriott|
|Show||Ubuntu 10.04 "Lucid" amd64 (+ variants like Kubuntu)||Apr 06 2012||1.4||Yes||No||Garbage||an anonymous user|
|Show||Gentoo Linux x86_64||Sep 10 2011||1.3.28||Yes||No||Garbage||Charles Simmons|
|Show||Arch Linux||Jul 23 2011||1.3.24||Yes||No||Garbage||Shaun|
The notes for applying a patch to get the game to play only works for Wine 1.9.6 or older.
The game is broken and will not start in Wine 1.9.7 or newer builds - with or without a patch.
While still far from perfect and prone to unexpected crashes (dependent on hardware), The Sims 2 can work fairly well if you possess later expansion/stuff packs that can update the base game as close to © 2008 as possible.
The infamous D3DERR_INVALIDCALL is due to the fact Wine is hardcoded to supply 256 vertex shaders instead of 1024 that The Sims 2 demands. Patching this constraint, as well as providing "dummy" code for an unimplemented shader interface allows the game to play to surprising results.
There are still some glitches, such as:
The game's rendering (lighting?) engine has also changed significantly from it's initial release in 2004, meaning that the latest base game version (EP9, © 2008) plays a lot better then the original base game and earlier expansion packs.
Here's some videos showing the game in action:
Before you start: These steps are provided as-is. Patches may stop working with newer versions of Wine, and please do not submit any test results as this is not a true reflection of vanilla Wine or wine-staging.
1) Grab the latest source (confirmed to work with 1.8-rc2 to 1.9) for Wine from: http://dl.winehq.org/wine/source/
2) Download comment 124's patch (from bug report) from http://bugs.winehq.org/attachment.cgi?id=52904 and save as a .diff file. For details on what this patch does, see bug report #8051.
Note: This patch hardcodes the shader model to version 2. If you wish to test with SM3 using the registry keys, unpatch directx.c.
3) Open the terminal, cd to the root of the source (wine-xxxx/) and patch:
$ mv wine-xxxx/ a/
$ patch -p0 < the_patch.diff
4) Enter the directory to configure and make Wine. I used a 32-bit distro to save the hassle with 64-bit setups:
$ make -j4 (change 4 to your number of cores to speed up compiling)
5) Install/start the game from the source directory:
$ env WINEPREFIX=/path/to/sims2_wine_prefix/ ./wine explorer
Want it precompiled instead?
If you're impatient, a pre-compiled binary and source is available at https://www.dropbox.com/s/mna97xftkwfved0/wine-1.9.0-patched-sims2.tar.xz (except directx.c was unpatched so shader model versions can be set from the registry)
Adjust your settings accordingly
To prevent the resolution messing up the desktop or causing a crash, a virtual desktop may be essential, but it may work fine without one. When they say Wine can play games better then Windows. This might be true, the shadow bug caused by high settings is not present! (NVIDIA driver bug on Windows).
I also found the game to crash much less on a faster 3.7 GHz processor than at 2.7 GHz. Both ran adequately at both 1024x768 and 1920x1080 (1080p) resolutions.
A thank you goes to swswine for discovering the game's major unimplemented undocumented shader interface and for writing the patch to demonstrate.
Once again, please do not submit test results here as this is a hack to get the game running. Continue to submit tests for vanilla Wine or wine-staging (as long as this is explicitly stated), but it seems unlikely we'll see improvements from "Garbage" until the hardcoded limit is raised and there is a solution to adding the missing undocumented shader interface.