Friday, July 23, 2010

World of Warcraft 3.3.5 Wine 1.2 Slackware 13.1 kernel 2.6.33.4

Blizzard broke WoW with the 3.3.5 patch.. but not for long :)

Fist off, as always I install every game on its own separate WINEPREFIX. My WoW is installed to WINEPREFIX=~/.wine-wow

Installing WoW:

WINEPREFIX=~/.wine-wow sh winetricks vcrun2005

If you are like me and have enough bandwidth to supply all of Russia, then you can use the online installer.

Download the online installer

WINEPREFIX=~/.wine-wow wine /path/to/WoW/installer.exe

Go outside and play with friends or whatever, but make sure you turned your sound off on the computer. In about four hours you can come back and it will either be done or very close to done.

Ready to play.. hah, you wish!

******* BEGIN COPY BELOW LINE *********
commit f86e9325b7add7d47daf0a13683a8fddc6c1be16
Author: Frederic Weisbecker
Date: Wed Jun 30 15:09:06 2010 +0200

x86: Send a SIGTRAP for user icebp traps

Before we had a generic breakpoint layer, x86 used to send a
sigtrap for any debug event that happened in userspace,
except if it was caused by lazy dr7 switches.

Currently we only send such signal for single step or breakpoint
events.

However, there are three other kind of debug exceptions:

- debug register access detected: trigger an exception if the
next instruction touches the debug registers. We don't use
it.
- task switch, but we don't use tss.
- icebp/int01 trap. This instruction (0xf1) is undocumented and
generates an int 1 exception. Unlike single step through TF
flag, it doesn't set the single step origin of the exception
in dr6.

icebp then used to be reported in userspace using trap signals
but this have been incidentally broken with the new breakpoint
code. Reenable this. Since this is the only debug event that
doesn't set anything in dr6, this is all we have to check.

This fixes a regression in Wine where World Of Warcraft got broken
as it uses this for software protection checks purposes. And
probably other apps do.

Reported-and-tested-by: Alexandre Julliard
Signed-off-by: Frederic Weisbecker
Cc: Ingo Molnar
Cc: H. Peter Anvin
Cc: Thomas Gleixner
Cc: Prasad

diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 3339917..b1e85b0 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -529,11 +529,20 @@ asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *eregs)
dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
{
struct task_struct *tsk = current;
+ int user_icebp = 0;
unsigned long dr6;
int si_code;

get_debugreg(dr6, 6);

+ /*
+ * If dr6 has no reason to give us about the origin of this trap,
+ * then it's very likely the result of an icebp/int01 trap.
+ * User wants a sigtrap for that.
+ */
+ if (!(dr6 & ~0xffff0ff0) && user_mode(regs))
+ user_icebp = 1;
+
/* Catch kmemcheck conditions first of all! */
if ((dr6 & DR_STEP) && kmemcheck_trap(regs))
return;
@@ -575,7 +584,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
regs->flags &= ~X86_EFLAGS_TF;
}
si_code = get_si_code(tsk->thread.debugreg6);
- if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS))
+ if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS) || user_icebp)
send_sigtrap(tsk, regs, error_code, si_code);
preempt_conditional_cli(regs);
******* END COPY **************************

Save file as 2.6.33.diff or whatever .diff I can care less.

Patch your kernel, compile, apply, reboot

Since I am on Slackware I follow this guild for kernel compiling:

http://blog.tpa.me.uk/slackware-kernel-compile-guide/

After that is done (time depends on your processor)

login as user

emacs ~/wow.sh

#!/bin/sh
WINEPREFIX=/home/pegasus/.wine-wow/ wine "c:\Program Files\World of Warcraft\Wow.exe" -opengl

chmod +x ~/wow.sh

make a menu-item that points to wow.sh if your WM already created a link, delete it and run this one, you will most likely want/need the -opengl switch

WINEPREFIX=~/.wine-wow winecfg

make sure you are in windows xp, click on the Audio tab, make sure ALSA is selected and also select OSS (I had to do this to get sound to work, some do not, so troubleshoot to see if this works)

If all went well, your 8 hours of installing WoW and compiling your kernel (I do hope you compiled a custom and didn't JUST apply the patch) enables you to now play WoW on *nix with Wine!!!!!

(My main is a lvl 80 Gnome Warlock Europe Server Saurfang, name kamii) challenge me to a duel, if you dare, but tell me you saw this message and lets duel *nix style, then we can join a group together and pwn some Horde!!!!

****IF you have installed via the online installer, the installer files are still on your computer inside the wow WINEPREFIX. I forget where exactly, but search around and either burn them to some DVD's or delete it, because its like 20 gigs or something. Also, if you had problems with WoW updating itself with one of the updates (I had this issue) use google and try to find that update that isn't working and manually apply it, then let WoW do the rest. To save space when all updates have finished, delete them, because you do not need them anymore****

CURSE CLIENT

Want some addons in WoW? So do I, curse client works in Wine.. but don't get version 4, it wants/needs .net and doesn't work in wine, but we don't care you can still download and use version 3.

I installed my Curse Client in the same WINEPREFIX as WoW.

WINEPREFIX=~/.wine-wow wine /path/to/curse.exe

ie6, .net 2.0 is required for this to work

removepkg ttf-indic-fonts-0.4.7.4-noarch-1 (version may have changed so use pkgtool)

emacs /usr/share/fonts/TTF/fonts.dir

Search for string Samyak

Remove that line log out, log back in (don't just log out of X)

WINEPREFIX=~/.wine-wow/ winetricks ie6 corefonts fontfix dotnet20

When its done installing in 2.5 seconds you can load it up and start installing your WoW addons, or updating the ones you already have!

1 comment:

  1. EDIT: WoW Cataclysm still requires this kernel patch if you have not already updated your kernel. 2.6.35+ kernel does not require the patch.

    Also you will notice some changes in Cataclysm's installer. It was much faster for me and I had no issues (I did a full reinstall of WoW when cataclysm hit. I found cataclysm easier to setup than WOTLK). Steps are the same, but I had no errors or lags or issues. The automatic in-game downloader also works under wine. Just make sure you are finished with the core downloads, once that happens, you can play the game, but as Blizzard states, you may get lag.

    ***NOTE for those with a nice GPU***

    You still need to load WoW with the -opengl switch. Yes this will disable some of your GPU's special features, but you will not beable to play unless you enable -opengl. It sucks I know, I have an EVGA GeForce 460 and thought I would beable to set it to the highest settings, but its not possible yet. We can always hope there will be a way in the future.

    ReplyDelete