Ok...Let me start off by saying that I am still a huge n00b when it comes to linux. So, if some of what I'm about to say was done incorrectly or is unnecessary then let me know please.

1) Firstly, grab all of the 32bit emulation packages from Portage.

Code:

emerge emul-linux-x86-baselibs
emerge emul-linux-x86-xlibs

2) I grabbed the latest 32-bit nvidia opengl libraries from my friends machine. You can find these in: "/usr/lib/opengl/nvidia/lib/". I took that whole folder (should be about 8 or so files). Alternatively, you can probably just get the libraries from www.nvidia.com. Once you have them, stick em in a folder somewhere
(If people want, I'll try to host the libraries somewhere)

3) Now we have fun. Open a terminal and cd to /emul/linux/x86/usr/lib/opengl/xfree/. Once you're there rename the lib directory to something else.

Code:

mv lib XXXlib

Once you've done that, make a new lib directory.

Code:

mkdir lib

Now, copy those 32-bit libraries into the new lib folder.

Code:

cp /path/to/32lib/* lib/

Now, go into that directory and take a look at whats in there:

Code:

ls -l libGL*

Make sure that you see a libGL.so.1 and a libGLcore.so.1. They should either be files of about 5megs or symlinks that point to files in the same directory that are about 5megs.

4) Finally we play. There is however one catch...you need to disable direct rendering for the duration of your play in order for it to work. This will give you a slight performance hit to what you would actually have assuming your system was 32-bit but, any game will still be more than playable. Anyway, since I wanted to play neverwiner nights I went over to my nwn directory. Once there, I typed

Code:

export __GL_FORCE_DIRECT=0
./nwn

This basically turns direct rendering off for anything thats run in that terminal window. Then, nwn ran and it was beautiful. I bumped the resolution up to 1280x1024 and turned on some effects and I still managed a solid 50FPS in a large area. Good stuff.

NOTE: At step 4 when I tried to run NWN the first time, I got an error saying that libGLcore.so.1 could not be found. If this happens, try running ldconfig.

Thanks for posting this procedure, and I would like very much if you could host or show me where to find the 32bits nvidia binaries.
I couldn't extract them from the nvidia IA32 package, and would appreciate to not spend several hours building a 32 bits system just to get those libraries.

Well but even with the changes the nwn menu doesnst work. The game actually runs fine. Except for the fact that it is a little slow.
Enemy Territory on the other hand is terribly slow and unplayable. But at least there are no graphic failures anymore.

Mayb nwn still is, but enemy territory is not anymore. It was in software mode before because i hat about 13fps then. Now its about 60 but when it comes to large areas it drops to about 20-30 fps. And that actually doesn't seem to be software mode.
Enemy Territory doesn't run when i dont provide export __GL_FORCE_DIRECT=0. NWN neither, is that a sign for it running with the right drivers? Because NWN did run without that before i changed the driver files.

I was finally able to play Warcraft 3 via 32 bit emulation and this thread. I just followed the directions of lazE, to get the nvidia libraries I just downloaded them from nvidia.com and extracted them. Then copied them over according to the directions, I had to make the symlinks myself. Then I installed winex3 using the ebuild and copied over the directory from my previous 32-bit install of winex. It worked great, it was definately slower than it used to be. At least it is working though. Thanks for the thread I just wanted to put this up so that people would know that it is possible to use winex in a 64bit environment. Thanks -Steve

well i follwed everything to the letter, but this is what i get:
bash-2.05b# ./ut2004demo
Xlib: extension "XiG-SUNDRY-NONSTANDARD" missing on display ":0.0".
Either GL_EXT_bgra or glDrawRangeElements not supported- bailing out.

History:

Exiting due to error

if i set the __GL thing to 1, it will fail to load the thing at all, which makes sense. . . also, these libraries are version 1.0.5336-r1 that were emerged on my athlon-xp system. while on my 64, the only version that will emerge is 1.0.5332-r1. Would this cause a problem? How would i go about fixing it._________________CFLAGS="-march=i386 -m64"
from root (/) : mount -t proc proc proc

I did this using 32-bit nvidia drivers that were a little bit older. You may want to try using a 32bit version thats a bit older than your 64bit version._________________"We are what we repeatedly do. Excellence, therefore, is not an act, but a habit."
-Aristotle

that seems pretty odd. i guess it's possible that for some reason it is not looking in your 32-bit emulation directory.

i guess it's also possible that for some reason it can't deal with the symlink. on my machine, libGLcore.so.1 and libGLcore.so.version are both actual files. try making an actual copy of libGLcore in the same directory but call it libGLcore.so.1._________________"We are what we repeatedly do. Excellence, therefore, is not an act, but a habit."
-Aristotle

Thanks for your reply lazE, but I have already tried that. Mysteriously enough, if i remove libGL.so, ET complains about not finding that one instead, so it seems to be looking in the right place at least... Strange indeed. Could you make your 32-bit libraries available so I can try them as well?

they're on another machine that's not currently up and running at the moment. after class tonight ill pull the HD so i can grab the drivers off of it._________________"We are what we repeatedly do. Excellence, therefore, is not an act, but a habit."
-Aristotle

After installing the emul libs, NWN just works with no additional work.

ET on the other hand, requires libGL.so libGL.so.1 libGLcore.so and libGLcore.so.1 in /usr/lib32 from the 32bit NVidia drivers, and for __GL_FORCE_DIRECT=0 to be set. I seem to recall having to run ldconfig after doing this too, might be wrong though...

However, if the system is setup for ET, then NWN simply doesn't work anymore, and visa versa.

EDIT: the libs I put in /usr/lib32 were actually symlinks, I basically copied what opengl-update does. I even made a symlink for libglx in whatever directory that usually goes in, but I don't think anything uses this.

Also, my 32bit drivers are version 5336, and the 64bit drivers are version 5332, this does not cause a problem