I found that I had to make these changes to get the game to work in full-screen mode. Once these changes were made it worked perfectly all the time.
In the registry set the following key:
HKEY_CURRENT_USER/Software/Wine/DirectInput/MouseWarpOverride = force
In winecfg add checkmarks to the following checkboxes:
Allow DirectX apps to stop the mouse leaving their window
Emulate a virtual desktop (enter your screens native resolution)
In UT2004/System/UT2004.ini in the [Engine.Engine] section:
Comment out your old RenderDevice
In UT2004/System/UT2004.ini in the [WinDrv.WindowsClient] section:
Set your WindowedViewport to your native resolution
Set your FullscreenViewport to your native resolution
Set your MenuViewport to your native resolution
I didn’t have to change the MouseWarpOverride setting to fix the mouse lock issue – simply running in a virtual desktop at my native resolution fixed that. Also, I couldn’t find an “Allow DirectX apps to stop the mouse leaving their window” option in winecfg, so I didn’t do that either. I did need to install lib32-openal to get the sound to play properly though. Once done, it all plays fine under 64-bit Arch Linux using wine-1.7.54.
P.S. There’s a native Linux client for UT2004, but rather than dig about the net finding ancient binaries, symbolic linking libs to pretend I have older versions and patching together a complete set of files from the Windows version I have, I’ve just opted to use wine. Once you’ve done the above setup it all works flawlessly.
Feb 2013 Update: More recent versions of Wine are now available in the standard LMDE repositories, so skip all the headache below and just install Wine with a s swift sudo apt-get install wine and you’re done!
The Wine “not-emulator” allows you to run Windows software under Linux, but the version in the Debian testing repos (themselves cutting edge) is pretty old, at time of writing it’s a 1.3.6 variant, while Wine 1.5.0+ is now available. Unfortunately, upgrading can be a bit of a pig if you want to build Wine yourself, so a far better solution is to find some Debian binaries and install them. So let’s do that…
Getting the Debian binaries
Wine binaries are available for a whole heap of different platforms, distros and architectures from http://www.winehq.org/download/, but in this case I’m installing on Debian, so if you are too, head on over to http://dev.carbon-project.org/debian/wine-unstable/ and grab the following packages (either 32 or 64 bit, depending on your architecture – I’m using 64-bit LMDE so I’ll use the 64-bit package names for this quick guide):
jp helpfully provided details that for the above packages to install without issue, you’ll first need to install the packages:
So do that via your mechanism of choice, for example, if you use apt-get then you can install them though a simple:
Before you can install any new Wine stuff, you’ll first have to uninstall the wine package. Do that through whatever means you feel most comfortable with, ya know, synaptic, apt, dpkg etc.
Once that’s done, you’ll want to install all the libwine packages through dpkg (to be honest, you might not need them all – but it doesn’t hurt, and you’ll certainly need most of them).
To install all the libs, open up the location you saved all the .deb files to in the console, and run:
Once that’s completed successfully, in the same location run:
And finally, in the same location again, run:
Getting the gecko engine
At this point we’re 99% complete, we just need to launch winecfg and let it install the Gecko engine for web-browser shenanigans (again, you might not need this – but there’s no harm in it, and Wine’ll moan at you about it if you don’t). So just run:
And when it prompts you about gecko, just click on [Install].
New cutting-edge Wine goodness is now yours to play with, although from this point on you won’t get automatically updated as wine won’t be installed from any repository. For this reason, it’s worth holding onto all the debs so you can uninstall them with ease via a swift sudo dpkg -P *.deb (-P for purge) if at a later date you want to go back to the repo version.
As Bryant would say – Drink some for me, eh, pal? ;)
April 2012 Update: Iain’s cracked the play-without-playfield-texture-or-don’t-play-at-all issue; the trick is to use PlayOnLinux, which forces use of Wine 1.2.2 for FP! See details in the comment here!
I used to play Visual Pinball back in the day on Windows, and when combined with PinMAME for the ROM side of things it was awesome! But when I moved to Linux the PC gaming basically stopped. However, the other day I picked up Williams Pinball Classics for the 360 – and it’s absolutely brilliant! So this got me thinking about whether Future Pinball (the newer incarnation of Visual Pinball) can run in Linux – and with some tweaking, it can!
Without the tweaks you’re likely to get two specific problems:
You can’t start a game (the table loads, lights flash, you can nudge the table and change the camera angles but the game just won’t start), and
There’s no sound.
The good news is that both of these can be fixed with a little bit of tweaking! The bad news is that unless you have a videocard with a lot of VRAM (I’m going to guess 1024MB minimum, as the issue occurs on my 512MB card under Gnome Shell) then tables which you download (but strangely not the Sci-Fi table that comes with FP) are likely to be missing the larger textures such as playfields. This is pretty odd as I can fire up FP in a XP virtual machine with 128MB of video RAM allocated (with far less performance, FPS-wise) and the textures will display without issue – they just don’t like to appear through Wine! So if this is a deal-breaker for you then you might be better off trying Future Pinball under an XP virtual machine, or calling the whole thing off. But if you want to get Future Pinball working in Linux, then we can make it happen…
Note: Wine automatically guesses the availble video RAM on your graphics card, and I’ve got to say, I have no idea if its guess is accurate. I took a look at the Wine useful registry keys and I don’t even have the direct3d key to modify the video RAM settings (because installing DirectX in Wine is considered bad-form, apparently), so I’ve no idea how to tell wine to allocate a reasonable amount of video RAM. Perhaps this will change in the future.
Step 1 – Installing Wine
To play Future Pinball you’re going to need a copy of the Wine (Wine Is Not an Emulator) “emulator”, which you can grab from your distro repositories or from WineHQ directly. So either run the following (or your distro’s equivilent package installing command) or grab it from synaptic package manager or such:
Once it’s installed, if winecfg doesn’t automatically run, launch it yourself with the command (don’t sudo this!):
Then, get it to autodetect your drives by going to the Drives tab and clicking on, you guessed it, [Autodetect], like this:
Once that’s done, click [OK] to close down Wine Configuration. By default, Wine creates a hidden folder called .wine in your home directory where it places its files, including the folder that acts as your C: drive in the folder ~/.wine/drive_c.
Once these are downloaded, navigate to the directory you downloaded them to from the commandline and run:
Accept the licence, click Next/Next/Finish etc. and that’s done. Future Pinball will now be installed in ~/.wine/drive_c/Games/Future Pinball.
Now install the the Sci-Fi table by running:
wine ./Sci-Fi\ Classic.exe
You’ll want to change the installation directory from the default of C:\Program Files\Future Pinball to C:\Games\Future Pinball during the install wizard for this. Don’t bother creating a Tables folder though, as the table itself contains a top-level Tables folder – so just pointing it at C:\Games\Future Pinball will be fine.
Step 3 – Configuration and Tweaking
By default, Wine will attempt to run things as Windows XP (as opposed to 2000, or ME, or Vista or 7 etc). This is fine, but as things stand we’re still not going to be able to play any pinball just yet because Future Pinball itself wants to run as Administrator when running in Windows… but we don’t have a Windows Administrator account (in fact, this same issue appears when running FP in Windows natively – if you don’t “Run As Administrator” it, you can’t start a game) – and unfortunately no, sudo won’t cut it ;) So next we need to workaround this by adding a dll and telling Wine to prefer it.
To do this, download the file: oleaut32.dll and place it in your ~/.wine/drive_c/Games/Future\ Pinball/ folder, then run winecfg again. This time you should see “Future Pinball.exe” in the applications pane of the Applications tab – so click on it to select it:
Now click on the Libraries tab, then on the New Overide for Library dropdown. Find the listing for the file oleaut32, click on it then click [Add] (you can leave the default settings as “native, builtin”. With that done, you should see something like this:
With the new DLL taking precedence over the Wine built-in we’ll be able to start a game of pinball, so just hit [OK] to save and close the Wine configuration settings and we’re ready to get our flippers on =D
Step 4 – Launch without PulseAudio
Wine doesn’t natively support PulseAudio, although it’s fine with Alsa. So to play with sound we’ll need to bypass PulseAudio with the pasuspender util. To do this, all we have to do is launch Future Pinball like this:
With that done, just press F4 to bring up the table selection window and you should see something like this:
Now click on [Load and Play Table] and we’re good to go.
Step 5 – Play a Mean Pinball
Future Pinball is like an arcade emulator, so you have to “insert a coin” before you can play. The main keys are:
5/6/7/8 – Insert coin for player 1/2/3/4 respectively
1/2/3/4 – Start 1/2/3/4 player game
Enter – Launch ball (i.e. shoot ball w/ plunger to start game)
Left/Right shift – Left/Right flippers
Space – Nudge table
F1-F8 – Different camera views
F9 – show stats (fps etc.)
So to start a single player game you might press 5 to insert a coin, 1 to start a 1 player game, then Enter to launch the ball – and you’re off! This isn’t my video, and it’s prolly not running on Linux, but this is the kind of stuff FP is capable of:
6 – Cleaning up
FP doesn’t close down cleanly in Wine, so you have to assist it with a bit o’ the old kill -9 ;)
Update: FP will close down properly on Wine 1.5 onwards, so you won’t need to perform these steps. When I originally wrote this I was using Wine 1.3.something.
And on the off-chance that pulseaudio stops working, just run the following and it’ll restart for you:
Many thanks to Christopher Leatherly and everyone who had a hand in Future Pinball for its existence, to Mahen for his posts on the WineHQ Future Pinball entry for the fixes needed to get everything running, and to everyone who’s worked on Wine =D
Final Technical Notes
I did try to install FP through the fpwine FP installer script, but it’s legacy because some of the wine options called are deprecated, so I found a modification of the script on ubuntuforums-fr.org, which with suitable tweaking (DCOM98.EXE would throw a fit on install) would install FP into its own ~/.fpwine “shell” but although that added overrides for the oleaut32.dll, ole32.dll, rsaenh.dll and crypt.dll, I still couldn’t get all the textures working in downloaded tables (which would work fine in an XP virtual machine). If I could specify how much VRAM I had to Wine, I think the issue would be solved.
Also, a workaround to minimise VRAM is to disable loading the textures into the editor (available in FP from Preferences | Editor Options…) – but at least for me, it doesn’t minimise VRAM usage enough. And if you’re trying to minimise VRAM and get textures working you’ll probably want to enable non-power-of-2 textures (Preferences | Video / Rendering Options…), try starting tables off at minimum detail settings (i.e. no High Quality textures), and re-start Wine/FP between table reloads as alledgedly it leaks memory (including VRAM), which is only going to make things worse each table you load.
Finally, the fpwine script likes to install version 5.6 of VBScript (vbs56men.exe), which I found completely knackered the table scripts, so I’ve found its best to avoid installing it and leave Wine alone with its own VBScript functionality.
I’m -sure- this is all doable somehow… I just haven’t managed to crack it yet, and it might be the case that Wine needs further work before it can be cracked at all.
The Sci-Fi table works perfectly, but it still feels like 4th and inches to get everthing working 100%…
I think I’ve tried pretty much every piece of CD ripper software on Linux, and my considered weapon of choice is none of them. That’s not to say there aren’t good CD rippers for linux, there are some great ones – but they all either have problems or quirks or lack features I deem essential for my own personal ripping tastes, so one by one they get ruled out until there is literally nothing left. What I wanted to use all along was simply EAC (Exact Audio Copy) with the Lame encoder – just in Linux. So that’s exactly what I’m going to do…
Wine is a piece of software which acts as a Microsoft Windows compatibility layer / API interpreter, that is, it contains a rewrite of the Windows APIs and interprets the calls made by Windows software (which a Linux system cannot natively understand) into a Linux-specific system calls (which of course Linux can work with). If this is all a bit more detail than you need then the take away is this: You can run most Windows applications on Linux through Wine.
Installing and configuring Wine on any modern Linux distribution is pretty straight-forward, assuming you’re using Ubuntu just snag it from the standard repositories through Synaptic or grab it through apt-get with:
Next, you’ll want to configure it, so if the Wine configuration window isn’t launched as part of the install, then run the following command to bring up the configuration dialogue:
From here hit the Drives tab and then click on the [Autodetect…] button – what you see on your machine will obviously differ from what I see on this machine in terms of detected drives:
With the drives detected (don’t worry about not seeing your CD drive for the moment) just click the [OK] button and we’re done for this bit.
A final note – Wine creates a hidden folder called .wine in your home folder, and this is where it puts its configuration files along with all installed Windows applications. If you can’t see this folder (i.e. you have Show Hidden Files disabled) and you’re using Gnome/Nautilus then you can toggle it through the View | Show Hidden Files menu option (Shortcut: Ctrl+H).
Getting and Installing Exact Audio Copy
EAC is freely available from here. Get yourself a version =D
Update: I found when re-installing EAC at a later point that 1.0 beta 1 version of EAC would fail to start with Wine, while 0.99 beta 5 would work perfectly. Find older versions here.
Once you’ve downloaded the installer .exe, right-click on it and select Properties from the pop-up menu, then go to the Permissions tab and check the Allow executing as a program checkbox followed by the [Close] button:
Because not every Windows program will work through Wine, and it’s often useful to see at what point it’s failing, it’s good practice to launch Windows apps through Wine via the command line by using:
This way, you can see any Wine or program output in the console, and see what’s going on. You’re free to just right-click on an exe and choose Open with Wine Windows Program Loader (and if you know a program works properly that’s probably the best option), but first time at least, run it through the command-line so you can see what (if anything) is happening when you launch the executable.
EAC itself is pretty easy to install, just click Next / Next / Finish etc and let it install to the default location (do pay attention to the part of the install process where it wants you to install the Ask toolbar though – you probably don’t want that rubbish). Skip ahead briefly at this point if you’d like to grab Lame in time to configure it during install, otherwise you can always configure it later on.
Once EAC’s installed, you can launch it from the terminal with the following (rather fugly) command:
Lame is IMHO the best mp3 encoder available, and is free, open-source software – but you probably don’t want to build it yourself. It’s a lot quicker and easier to grab a copy from somewhere like here. Once you’ve got the zip file, extract it and move the lame.exe and lame_enc.dll files into your Exact Audio Copy folder (wine ~/.wine/drive_c/Program\ Files/Exact\ Audio\ Copy/) then navigate to that folder, right click on lame.exe and enable the execution flag on it just like we did for the EAC installer earlier.
Two points to note are that you need to get the 32-bit version of Lame, as Wine won’t handle the 64-bit version, and that you shouldn’t get an alpha/testing version because it’ll occasionally crash during the encoding. Something like the 32-bit 3.98.4 version is perfect.
During install EAC will ask you where it can find lame, and will have a try at finding it itself – either allow it to or click the [Cancel] button to manually point it at the lame executable.
Configuration of EAC is a huge topic, and how far you want to go with it is entirely up to you (and entirely outside the scope of this article) – but I will say that when you’re ripping any audio, you’re going to rip it once, and listen to it a hundred times – so it makes sense to go for a relatively slow and accurate rip, and then encode the rip at a high bitrate using variable-bitrate encoding.
For my own Lame encoding, I use the following set of parameters to maximise the quality and bitrate of the final mp3 using variable-bitrate encoding:
These need to be entered into the Compression options section of EAC (from the File menu), so my setup looks like this:
With all this in place, you should be able to use EAC just like you might’ve done before in Windows, with the exact same functionality, and obtaining the exact same quality results. It’s worth noting that although once configured and working you can easily launch EAC through the Wine menu entry in Gnome or KDE or whatever you’re using, but if you launch it from the command line get to see the lame encoding output so you can see what kind of bitrate different parts of any given song are using.