Monday, June 15, 2009

Oblivion on Wine 1.1.23

Greetings all. I have decided to begin reporting how well Oblivion runs under each version of Wine, a compatability layer for running Windows games and applications under Unix and Unix-like systems such as Linux, Mac OS X, etc. Here is my test system:

Processor: AMD Athlon X2 5000+ Brisbane
Memory: DDR2-800 SDRAM
Video Card: BFG Tech GeForce 9800 GT, 1gb of video RAM, overclocked out of the box
Operating System: Arch Linux 2009.02, i686 architecture
Linux Kernel: 2.6.29.4
Video Driver:
180.51
Wine: Version 1.1.23, compiled with these flags for a small boost to performance: "-march=athlon64 -mmmx -msse -msse2 -msse3 -m3dnow -02 -fomit-frame-pointer"

To start things off, I installed Oblivion and configured Wine as per the instructions detailed on the Unofficial Elder Scrolls Pages. I would recommend installing the directX headers even though it isn't required past version 1.1.20, as there is an annoying error window about dxdllreg.dll that pops up if you don't.

My Impressions on 1.1.23: Oblivion runs with far less lag than it did in previous versions, thanks to the improvements to Wine's direct3D code. I can play on High graphics settings (HDR disabled) with no problem, without installing any of the mods used to reduce lag (operation optimization, qarl's reduced normals, etc.) The castles and the cities which previously lagged for me at single-digit frame rates (Cheydinhal, Bravil) now run much much better. As well, shaders work much better, pbuffer has none of the problems I had with it in the past (crash or screen flipping upside down when entering outdoor areas). And all of this is running "fullscreen", in Wine's virtual desktop. I would normally run it native fullscreen, but I do so due to some crashes (frequent in both Windows and Wine), and my tendency to multitask.

Also, the Oblivion Mod Manager now works under Wine, allowing you to change mod loading orders and install mods that are distributed in the omod format. However, to use it you will first need to install winetricks. On arch, you run "yaourt -S winetricks", and on Ubuntu/Debian you run "sudo apt-get install winetricks". Then, when winetricks is installed, you run "winetricks dotnet20" to install .Net 2.0. The only notable problem is some minor interface bug, which can be mildly annoying. (kudos to Timeslip for releasing OBMM under the GPL)

What Doesn't Work:
  • HDR (High Dynamic Range) doesn't work. You'll be greeted by a blank screen if you have it enabled. If you do want HDR, give the Fake HDR mod a try, though I haven't tested it yet.
  • Antialiasing doesn't work, at least for me. It might work for some people, though.
  • The Oblivion Script Extender mod still doesn't work, so you can't run mods that use it, such as the keyring or deadly reflexes.

Minor Problems:
  • Sometimes when the loading screen comes up when changing areas or fast travelling, the loading screen will rotate 180 degrees.

Crashes:
This version has several issues with crashes, but some of them are easy to work around. It is recommended that you keep a terminal window open, so you can enter the command "wineserver -k" if Oblivion freezes on a crash.
  • Crashing on Startup: This happens on occasion, when Oblivion switches to fullscreen mode. If this occurs repeatedly, what I do is I run "wineserver -k" on a terminal, and then I restart Oblivion from its launcher, wait a few seconds, then close it. Then I restart the launcher again, wait a few seconds, and then start Oblivion. If I get another crash, do the "restart and then close" part twice.
  • Crashing after Enabling/Disabling Mods: Oblivion sometimes crashes after changing the mods list. What you do when enabling or disabling is you exit the launcher after changing the mods you're using. Then, you restart Oblivion normally.
  • Crash When Loading a Saved Game: Oblivion frequently crashes when loading or continuing a saved game from the main menu. What you do is you start a new game (press space to skip opening movie), and then you load your saved game.
  • Crash When Using Local Map Outdoors: This one is nasty. For now, I just recommend to avoid using the minimap when outdoors. However, it sometimes does work, so the problem may be occuring at random. Though, it seems to me like it repeatedly occurs in certain areas.
  • Crash While Waiting: This has occured at random, and only seems to occur when I am waiting for a long period of time, such as when doing Glarthir's quest.
Oblivion Script Extender: The problem that caused OBSE to fail previously is gone, but a new problem has come up. I've placed the terminal output from it below, in case anyone knows what is going on. If you do, please tell me in the comments section:

wine: Unhandled illegal instruction at address 0x7ee347b0 (thread 0019), starting debugger...
Unhandled exception: illegal instruction in 32-bit code (0x7ee347b0).
Register dump:
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
EIP:7ee347b0 ESP:00efea0c EBP:00efea18 EFLAGS:00210206( R- -- I - -P- )
EAX:00340000 EBX:7efe4448 ECX:7efecaa8 EDX:00000000
ESI:00340000 EDI:00340005
Stack dump:
0x00efea0c: 7efc3a9e 00340005 7efe4448 00eff498
0x00efea1c: 7efc583b 00340000 00340005 0d7cb338
0x00efea2c: 01c9ed22 00000000 00000182 00000001
0x00efea3c: 00000000 00000000 00000000 00000000
0x00efea4c: 00000000 00000000 00000000 00000000
0x00efea5c: 7efe4448 7ffd4000 7ffd41d4 00eff498
Backtrace:
=>0 0x7ee347b0 GetTempFileNameW+0x220() in kernel32 (0x00efea18)
1 0x7efc583b call_thread_func+0x4b() in ntdll (0x00eff498)