Universal FAQ for ePSXe under Linux, support for USB joypad + 3D acceleration 1: First of all, I recommend Linux over Windows for obvious reasons: Stability, speed, etc... We won't delve into that matter as this is not the purpose of this FAQ. I actually assume, that you DO have a minimum knowledge of *NIX based machines. Everybody has some preferences but I actually would have 2 distros to recommend here. If you go for stability, opt for Debian. If you prefer speed and fast developping community, take over Gentoo Linux. Of course, I am not discriminating any other distributions, so feel free to adapt this FAQ to you own needs. DON'T FORGET TO LOGIN AS ROOT or SU, where needed. 2: Kernel Parameters used to compile in order to make Joystick and 3D work: - Loadable Module support --> Enable all options there, opt for a non-modular kernel so you don't have to load at every startup the modules, but if you DO build a modular kernel, load the modules by adding its entry to /etc/modules.autoload.d/kernel-2.x (where x is your kernel series, i.e, kernel-2.4 --> If you have linux 2.4.xx or kernel 2.6 --> if you have linux 2.6.xx) I recommend using the 22.214.171.124 STABLE or the 2.6.15-rc7 standard (vanilla) kernel, if you want bleeding-edge. (At the time of writing) Now let's configure the necessary kernel options: CD into /usr/src/linux $make menuconfig - Processor type and features --> [*] MTRR - Device Drivers --> Input Device support --> <*> Joystick Interface <*> Gameport support <*> Enable your gameport interface here, eg: SB Live gameport [*] Joysticks <*> Your joystick Character devices --> <*> /dev/agpgart (You can enable/disable it as NVIDIA will provide its own AGPgart <*> Enable your AGP chipset here [ ] Direct Rendering Manager DISABLE THIS !! Graphics support --> [*] VESA VGA Graphics support USB Support --> <*> EHCI HCD support <*> OHCI HCD support <*> UHCI HCD support <*> USB Human Interface Device (full HID) support [*] HID input layer support [*] /dev/hiddev raw HID device support Block Devices --> <*> Loopback device support <*> Network block device support <*> RAM disk support [*] Initial RAM disk (initrd) support Networking support --> [*] Networking support Networking options --> <*> Unix domain sockets [*] Network device support To compile your kernel make: (for a 2.4 kernel) $ make dep && make clean bzImage modules modules_install (for a 2.6 kernel) $ make && make modules_install Copy over the kernel) $ cp arch/i386/boot/bzImage /boot; cp System.map /boot If you have an AMD64 system, that would be $ cp arch/x86_64/boot/bzImage /boot; cp System.map /boot 3: Reboot your system. Before your system boots, plug in any Gameport / USB joysticks. (That is not a problem if you have hotplug enabled in your kernel and hotplug utils compiled) You can check if hotplug works by plugging in you USB pad for example and doing a: $dmesg | tail Your output should be similar to: #usb 2-1: new low speed USB device using uhci_hcd and address 2 drivers/usb/input/hid-core.c: timeout initializing reports input: USB HID v1.00 Joystick [Logitech Inc. WingMan Gamepad] on usb-0000:00:10.0-1 4: Download the latest Xorg package, for now being 6.9.0 (Or modularized 7.0) untar it and CD into the dir. Compile it using # make World make install REBOOT 5: Install a window manager. I recommend fluxbox for the small size and well-proven stability. No KDE or Gnome, too much overhead, RAM / SWAP I/O. REBOOT login and now download from nvidia the kernel package, the latest being *1.0.8174* CD into your directory and: $ sh NVIDIA-Linux-x86-1.0-8174-pkg1.run OR $ sh NVIDIA-Linux-x86_64-1.0-8174-pkg2.run (if you have an AMD64, 64bit system) Build the kernel according to the README Do: #opengl-update nvidia (You should have compiled opengl-update prior to this step) 6: LOAD the nvidia kernel module: $modprobe nvidia You can add the module to /etc/modules.autoload.d/kernel-2.* for autoloading at startup Start you window manager using: $ startfluxbox or startkde, whatever. You can create/edit ~/.xinitrc so that you add startfluxbox and $ startx, then it autostarts fluxbox 7: TEST 3D in X: Open a terminal and # glxgears or # glxinfo | grep rendering you should see rendering:yes You should see 3 spinning gears 8: Now download a binary release of ePSXe and download the latest plugins from ngemu.com or Pete Bernert's page for Audio/Video plugins. Use omnijoy or padjoy plugins for joystick support, not the built-in ePSXe pad support. Don't forget to switch on the ePSXe compatibility in the plugin config page. Now config your ePSXe to your liking and enjoy ePSXe on linux. Games I've tested. My machine config --> Hardware: - Dual AMD Opteron 242 - 2*512Mb IBM RAM in Dual Channel mode - Palit NVidia GeForce FX5500 - Logitech Wingman gamepad under gameport AND USB - VIA K8T800 chipset Software: - Gentoo Linux 1.6 built from stage 1 - Kernel 2.6.13-rc2 - Xorg 126.96.36.199 built from CVS sources. - Fluxbox Window Manager - Nvidia Kernel & Nvidia GLX 7664 - ePSXe 1.60-r1 - Latest ePSXe plugins from http://www.ngemu.com/psx/plugins.php?cat=1&os=linux Games I've tested that work 95% --> 100% - Gran Turismo NTSC/UC - Gran Turismo 2 PAL - Oddworld, Abe's Exodus NTSC/UC - Brave Fencer Musashi NTSC/UC - Metal Gear Solid PAL - Tony Hawks PAL - Final Fantasy 8 NTSC/UC - Final Fantasy 9 NTSC/UC - Fear Effect 2, Retro Helix NTSC/UC - Alone in the dark, the new Nightmare NTSC/UC - Tekken 3 NTSC/J - Tekken 3 PAL - Wip3out Special Edition PAL - Thrill Kill NTSC/UC - Twisted Metal 3 PAL - Twisted Metal 4 NTSC/UC - Earthworm Jim 2 NTSC/UC - Dino Crisis 2 NTSC/UC - Final Fantasy Tactics NTSC/UC - Kurushi 2 Final NTSC/UC - Mortal Kombat Mythologies : Subzero NTSC/UC - Cardinal Syn PAL - Dragon Ball GT PAL - Resident Evil 2 DUAL SHOCK Edition NTSC/UC - Resident Evil 3 NTSC/UC Enjoy! Please read up on any problems arising before asking for help.