RegisterHomeNewsForumsArticlesDownloadsSearchContact usChat
Already a member? Sign in.


Reply
Batman: Arkham Asylum - MSAA fix
Old 22 April 2010, 15:29   #1
Golden Member
 

Posts: 445
CPU: q9450
GPU: hd4870
M/B: regular s775 board
RAM: 4gb
PSU: 700w
OK i'm not sure if i'm posting it in a right section, but as long as this limitation of "Batman: Arkham Asylum" game is hardware-related, i'm doing it here (correct me if i'm wrong, please).

I assume you all are aware of the issue, if you are here. If not, you can read some article or that official shameful tutorial.



So i recently tried to play Batman on my system, only to find out i can't enable MSAA, even using ATI Tray Tools. Maybe there are bugs in a hook library, or some problems because of other installed software, i don't know. The only 2 possible ways i found at the public are:

- VendorID emulation with ATT - didn't work for me neither on XP nor 7.
- MSAA patch by Thomas Bruckschlegel - works perfectly, but causes Windows LIVE to be disabled rightaway. This means no profiles, no progress save.

Tried to investigate this a bit more and discovered that the whole thing is plain simple. It took me just a couple of days to create a working solution.
It was tested by me on Windows XP x86 and Windows 7 x64. Let me know if it works for you or not.
__________________

Batman: Arkham Asylum - MSAA fix (100422)

* DESCRIPTION:
This patch will fix the anti-aliasing issue in "Batman: Arkham Asylum" game to enable the native MSAA support for any non-NVIDIA GPU.
- intended only for v1.1 of the game.
- tested only with PhysX System Software 9.10.0222 installed.

* HOW TO USE:
1. Drop the fix to the root game directory (not to the \Binaries\ subfolder but near it).
2. Launch the fix and press the "Cake" button.

* NOTE:
- Do not use this version with NoAA option. Or rename/delete PhysXLoader.dll from \Binaries\ folder if you want to play without anti-aliasing.
__________________

Here is how the difference looks like on my system:


__________________

Some technical details, if anyone is interested...
I discovered that both known methods are not 100% proper. When you are forcing your non-NVIDIA GPU to have a "10DE" VendorID, it actually helps to force a native anti-aliasing. But don't forget that this game is UE3-based. There are 3 checks inside the game:

1. Compare VendorID to 1002 (ATI) and decide if DisableATITextureFilterOptimizationChecks should be used.
2. Compare VendorID to 10DE (NVIDIA) and decide if UseMinimalNVIDIADriverShaderOptimization should be used.
3. Compare VendorID to 10DE (NVIDIA) and decide if MSAA is allowed.

As you see, it is actually not a good idea to emulate VendorID for your non-NVIDIA GPU. Both (1 and 2) options may cause a minimal impact on the performance and visual experience, but since it is a UE3 we can't deny that they are somewhat important.

Ironically, MSAA patch by Thomas Bruckschlegel patches both (2 and 3) places, and you still end up with not 100% proper engine configuration for your non-NVIDIA GPU.

It was easy to patch only a 3rd check to force MSAA support, but Windows LIVE made it impossible statically (patched inside the .exe) and almost impossible dynamically (patched in memory during a runtime). If you patch the executable file - LIVE just won't load, and when you patch it in memory - the game will crash within a minutes, as a result of LIVE security checks.

My solution consists of 4 parts:
- patch the BmLauncher.exe to allow setting MSAA level with original launcher.
- modified PhysXLoader.dll v2.8.3.31 (that's why it was tested only with PhysX SS 9.10.0222)
- dll file #1
- dll file #2

Just to clarify, the whole thing has nothing to do with PhysX, it may even work with other PhysX SS packages (although i'd recommend trying 9.10.0222 first). PhysXLoader.dll is just one of the few 3rd party dlls, which are being loaded somewhere near the engine initialization - at a point where the game did not process MSAA settings yet. The modified PhysXLoader.dll loads my custom dll #1 along with itself, and the purpose of #1 is to patch the needed (3rd) check in memory. Additionally, it creates a code for loading a dll #2 somewhere after MSAA settings processing place.
The purpose of dll #2 is to replace all the modified (and already executed) code with original code, so nothing will detect code modifications during a runtime.
You just end up with correctly-processed MSAA settings regardless of your GPU's VendorID and unmodified code section in memory, thus LIVE won't cause a crash.

You can see the result of the crash if you temporary rename or delete my dll #2 (fix.dll) from \Binaries\ folder.

Attached Files
File Type: rar BatmanAA-MSAA-fix-100422.rar (1.13 MB, 8461 views)

Last edited by GenL; 11 May 2010 at 13:09..
GenL is offline  
  
Reply With Quote
Old 22 April 2010, 19:10   #2
Dedicated Member
 

Posts: 110
CPU: X6 1055T @ 3,87Ghz
GPU: GTX760 2GB/OC + 560Ti
M/B: ASUS M5A99X EVO
RAM: 2x4GB G.Skill CL9@1600
PSU: OCZ Fatal1ty 750W Mod
Wow... you really put nVIDIA crap upside down. I still have BAA installed so I'm going to give it a try. The only NV MSAA is pure BS... seriously, I can't understand this kind of things that only hurt the PC gaming world.

Thanks for the patch!
Rents is offline   Reply With Quote
Old 30 April 2010, 10:33   #3
Member

Posts: 51
CPU: i7 920
GPU: 6970 + 9600GT PhysX
M/B: Gigabyte EX-58 Extreme
RAM: 12Gb DDR3-12800
PSU: Gigabyte Odin GT 800W
This is strange, but now I have got the GOTY Edition of Batman Arkham Asylum (Steam version) and it allows me to enable FSAA from the game menu (main card is 5870 and PhysX card is 9600GT). Maybe developers have removed the anti-ATI check in this new version?. Or I'm just lucky?.

Anyway thanks a lot GenL for your work
LordJuanlo is offline   Reply With Quote
Old 30 April 2010, 22:16   #4
Golden Member
 

Posts: 445
CPU: q9450
GPU: hd4870
M/B: regular s775 board
RAM: 4gb
PSU: 700w
Quote:
Originally Posted by LordJuanlo View Post
This is strange, but now I have got the GOTY Edition of Batman Arkham Asylum (Steam version) and it allows me to enable FSAA from the game menu (main card is 5870 and PhysX card is 9600GT). Maybe developers have removed the anti-ATI check in this new version?. Or I'm just lucky?
Very strange, indeed. If it's true, i wonder why they won't release a patch with such a feature for a regular version...
Thanks for the info!
GenL is offline   Reply With Quote
Old 11 May 2010, 13:21   #5
Golden Member
 

Posts: 445
CPU: q9450
GPU: hd4870
M/B: regular s775 board
RAM: 4gb
PSU: 700w
I've added screenshots of image quality comparison on my system to the first post. They are 2x zoomed in PNG format.

Also i've just found a funny mistake in my solution... Seems like my dll #2 is not being loaded if you don't enable any AA. It means, the game will crash if you set anti-aliasing setting to NoAA. I've added this note to the first post also.
For now i think it is not really important, since you are going to use anti-aliasing anyway if you have installed this fix. But i may try to fix this issue some next time.

Last edited by GenL; 11 May 2010 at 13:31..
GenL is offline   Reply With Quote
Old 11 May 2010, 14:14   #6
Newbie

Posts: 23
CPU: AMD FX-8150 (4.615GHz)
GPU: Radeon 7970 + 8800GTX
M/B: ASUS Crosshair V
RAM: 16GB DDR3-1866
PSU: Zalman 850w
I enabled the patch like you explained, however Games for Windows LIVE still won't allow me to log in. Wonder if my PhysX version might be the issue. AA works fine though, looks nice, plays nice, no saves.

System:
Windows 7 Professional x64
ATI Radeon HD 5870
Catalyst 10.3 (waiting to install 10.4)
PhysX 09.10.0129 (enabled with the Hybrid PhysX Mod 1.03)
Batman: Arkham Asylum updated to 1.1
Hexen525 is offline   Reply With Quote
Old 11 May 2010, 15:07   #7
Golden Member
 

Posts: 445
CPU: q9450
GPU: hd4870
M/B: regular s775 board
RAM: 4gb
PSU: 700w
Quote:
Originally Posted by Hexen525 View Post
I enabled the patch like you explained, however Games for Windows LIVE still won't allow me to log in.
What do you mean? GFWL just doesn't show up or does it decline your login details? The latter doesn't make any sense because there is nothing being done to LIVE system here...
If you can't see LIVE, make sure you actually can access it without my fix first. The main exe file (ShippingPC-BmGame.exe) should have a valid digital signature in both cases.
GenL is offline   Reply With Quote
Old 11 May 2010, 15:16   #8
Newbie

Posts: 23
CPU: AMD FX-8150 (4.615GHz)
GPU: Radeon 7970 + 8800GTX
M/B: ASUS Crosshair V
RAM: 16GB DDR3-1866
PSU: Zalman 850w
When I try to login to GFWL inside of Batman, the client crashes completely. No game at all (BmGame.exe has encountered an error and must close). If I try to login to GFWL from the Start menu, I can not connect. However, if I move to my laptop I can connect just fine.

See if I can get you some screen shots fast.
Hexen525 is offline   Reply With Quote
Old 11 May 2010, 15:23   #9
Newbie

Posts: 23
CPU: AMD FX-8150 (4.615GHz)
GPU: Radeon 7970 + 8800GTX
M/B: ASUS Crosshair V
RAM: 16GB DDR3-1866
PSU: Zalman 850w


Ideas?
Hexen525 is offline   Reply With Quote
Old 11 May 2010, 15:33   #10
Golden Member
 

Posts: 445
CPU: q9450
GPU: hd4870
M/B: regular s775 board
RAM: 4gb
PSU: 700w
Hexen525, is it the same if you delete or rename PhysXLoader.dll from \Binaries\ folder?
GenL is offline   Reply With Quote
Reply



Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts


Tags
batman: arkham






All times displayed in UTC
Powered by vBulletin from vBulletin Solutions, Inc.


User Agent   Copyright 2014 NGOHQ.com - All Rights Reserved   Disclaimer