Okay, I just finished 5 hours of gameplay with no CTDs. I'm not saying this IS a fix, hence why I'm posting here, to see if this may work for everyone else and get more people giving it a go.
I may be a bit verbose, however, I think it's worth it. This involves messing around with your DirectX files a bit, but, very minor impact.
Rig:
Gigabyte GA-X48-DQ (Intel X48 chipset)
Intel QuadCore 9450
2 Nividia 560Ti's in SLI (Using 1.5 SLI hack)
Nvidia Drivers 275.33
TH2GO DE
Resolution: 5040x1050
Forcing DX9 in BFBC2
Windows 7 ultimate 64bit
BFBC2 latest version (Steam Installed)
BFBC2 settings.ini (Note the DXVersion is forced to 9):
[WindowSettings]
Fullscreen=true
Width=5040
Height=1050
RefreshRate=59
VSync=false
[Sound]
Quality=high
VoipEnable=false
SpeakerCount=5
[Graphics]
Effects=high
Soldiers=high
Vehicles=high
Overgrowth=high
Undergrowth=high
StaticObjects=high
Terrain=high
Shadows=high
Bloom=true
HSAO=true
MSAA=0
Water=high
MainQuality=custom
Texture=high
DxVersion=9
Aniso=4
Detail=high
RenderAheadLimit=1
Fov=65
Okay, I was looking around my BFBC2 folder and noticed some DirectX files in the install directory:
D3DX9_42.dll
D3DCompiler_42.dll
(more files for D3DX10 and D3DX11 as applicable for the DirectX version you are running)
I said, hmmm, that's odd, why are there DirectX files in the install directory, it should be referring to my system's DX install....hhhmmm. So, I removed all the .dll files to a subdirectory called "oldDX" except for binkw32.dll, this is needed for the BINK video portions of the game.
Ran the game, all is still good. I stopped and pondered for a moment and thought, why would the game be calling a specific version of a DX library, I thought it should be using the latest....hhhmmm.
So, I went to my DirectX install directory:
C:WindowsSysWOW64
and sure enough, found the following files with a 9/4/2009 date:
D3DX9_42.dll
D3DCompiler_42.dll
d3dcsx_42.dll
I said to myself, gee I wonder. So I renamed those files by putting an "old" at the end:
D3DX9_42_old.dll
D3DCompiler_42_old.dll
d3dcsx_42_OLD.dll
Tried to run the game, it wouldn't launch. Aha, I said to myself, the game is calling a specific DirectX library, an older library that is.
Since my DirectX has the latest (June I think), there is a later DirectX library, these files have a 5/26/2010 date, those are:
D3DCompiler_43.dll
d3dcsx_43.dll
D3DX9_43.dll
NOTE: MAKE SURE YOU RENAME YOUR ORIGINAL _42 files so you don't overwrite them. BE SURE TO RENAME THEM, DON"T COME BACK HERE COMPLAINING YOU OVERWROTE THEM, I WARNED YOU
I went ahead and made a copy of those three files and renamed them to the "_42" library so BFBC2 would pick them up:
Copy_of_D3DCompiler_43.dll renamed to D3DCompiler_42.dll
Copy_of_d3dcsx_43.dll renamed to d3dcsx_42.dll
Copy_of_D3DX9_43.dll renamed to D3DX9_42.dll
Now, BFBC2 will link to the _42 library, however, it's actually running the _43 library, just renamed to _42.
Launched the game, and played for 5 hours with no CTD. THIS ISN"T EXHAUSTIVELY TESTED, I"M NOT GUARANTEEING ANYTHING. However, I played for 5 hours straight, no CTD, so I offer this workaround to everyone else to hammer it more. If it works, great, if not, well, I tried.
If you want to try the same fix for DX10 or DX11, the same files exist, just with a DX10 or DX11 name change. Just do the same thing. I don't use DX10 or DX11 because it causes some scaling issues in game, DX9 works just fine for me.
If you do try this, be sure to post your results.
|