It’s surprisingly hard to get the Playstation 2 emulator PCSX2 working if you’re running a 64-bit linux system, even though they’re cross platform and release linux binaries/sources first hand. The primary roadblock seems to be that the thing assumes a 32bit environment, and will refuse to start if it doesn’t find some 32-bit libs. Anyway, I got this working twice, both times quite bumpily, and decided it was high time this got written into a post for archival.
Credits by the way to this video which put me on the right track.
First, we gotta get PCSX2. This can either be downloaded from the site linked above, or, on OpenSUSE, can be obtained in packaged form from Pacman’s Games repo (mirror for 13.1 here).
Then we gotta grab the 32-bit libs that are needed. If you installed it with dependencies off the Pacman repo this may be taken care of for you (I’m not 100% sure), but in any case what you need to do is to pull out the Yast software installation interface and do a search for ‘wx’. This should get you a list like the following:
Now make sure each of those installed items are installed as 32-bit versions. Basically, click each of them, then click the ‘Versions’ tab, and make sure the ‘i586’ version is selected. Else select it, and apply at the end. For other distros, the gist I guess is to make sure you have 32bit/i586 versions of libwx and wxWidgets packages installed.
That should net you the required 32-bit libs, and you can give the pcsx2 executable a whirl at this point and hope for the best. In my case, I had one more hurdle before PCSX2 would run – the thing seems to be looking for the libwx libs in the wrong path. Fortunately it’s possible to tell it manually where to load the libs from by setting the LD_LIBRARY_PATH environment variable. This can be set right before running PCSX2 like so:
/usr/lib/wx-2.8-stl‘ is where the 32-bit libwx .so’s are on my system. This may vary for different distros, but it shouldn’t be overly hard to locate. Setting LD_LIBRARY_PATH appropriately allowed me to actually launch the PCSX2 UI, where configuring plugins, BIOS, etc may then proceed.
Running on integrated Intel graphics (I’m on a Lenovo Yoga 11s, Haswell version), the GS plugin that let me run games quite performantly is GSdx, configured to use “OpenGL (Hardware)”. Note that in Linuxland, open source drivers for higher-grade graphic cards (think Nvidia, ATI) don’t tend to perform well for graphic-heavy applications, so you’ll want to either switch to the proprietary drivers for those cards (if they exist and can be obtained), or to fall back to using the integrated Intel graphics chip, which tends to have good open source drivers.
I also had trouble with sound initially, which I was able to get around by first disabling Pulseaudio. Then, using the Spu2-X SPU plugin, configured to
PortAudio API: ALSA
Synchronization mode: TimeStretch
I was able to get pretty good sound for my games. Note that with ALSA it’s possible to get into a funny situation where ALSA selects a non-working sound card as default sound card – causing you to have no sound since the SPU plugin appears to be hardwired to use ALSA’s default card. This can in turn be remedied using the solution documented in my previous blog post.
Edit: it looks like one does not actually need to disable Pulse. If you can’t get sound on Pulse, try making the updated ~/.asoundrc file documented in my previous blog post. Using that I am able to get PCSX2 on PortAudio to coexist with all my other sound applications.
Whew! And that should cover everything. At least, that’s everything I know :) Perhaps it might help someone struggling with it as I was, but for now, I’m just happy to be able to play Persona 4 on Linux ^^