Retrogaming on Android

A picture of the Android logo with a heart made from retro consolesI got a new phone the other day (a Samsung Galaxy S3), so I was looking for fun things to play on it when I found a great retrocollect article about emulation on Android which lists the best emulators for all of the different emulated systems.

As it happens, from July 14th 2012 to July 28th 2012 (or thereabouts) there’s a stack of free *oid emulators available – usually you have to pay for the full versions (which have save-game support), but for a while they’re free – so why not? =D

So if you’re interested, you can get all the apps in the list below for the low, low price of absolutely nothing before approx. July 28th 2012:

  • Ataroid (Atari 2600 emulator): here,
  • Gameboid (Gameboy Advance emulator): here,
  • GBCoid (Gameboy / Gameboy Colour emulator): here,
  • Gearoid (Sega Gamegear emulator): here,
  • Gensoid (Sega Genesis / Megadrive emulator): here,
  • NESoid (Nintendo Entertainment System emulator): here, and
  • SNESoid (Super Nintendo Entertainment System emulator): here.

Winning!

Also, if you’re interested in arcade emulation with MAME there’s the free MAME4droid applications:

  • MAME4droid – based on MAME 0.37b5: here, and
  • MAME4droid Reloaded – based on MAME 0.139: here

The difference in the above two version of MAME are in regard to what version of MAME they’re based on (as I’m sure you’ve worked out) – but what this actually means might be a little less clear.

In essence, the MAME 0.375b is based on a version of MAME circa July 2000 – and this version was chosen because it came before the big MAME re-write. This means that the 0.37b5 version of MAME was the pinnacle of MAME development when the developers chose speed over emulation accuracy. MAME4droid supports around 2000 ROMs, which will have to be the right format for the 0.37b5 version of MAME, and there’s no (and never will be any) save/load game support.

The MAME4droid Reloaded version on the other hand is based on 0.139 MAME code (circa 2010), which means that it’s a lot more accurate, but it’s either going to be slower or you’re going to need a beast of a phone to run many games at full tilt – we’re talking about having a dual-core phone as the minimum. MAME4droid Reloaded supports around 8000 ROMs, which this time you can save/load as your wish, and (again) these ROMs will have to be in the right format for the 0.139 version of MAME.

As you might expect, it’s horses for courses – need save/load support and got a high-end phone? Pick reloaded. Lower end phone or game-o-choice not running fast enough? Try out the original.

Emulators for other systems

The list of systems above is in no way exhaustive, as there are emulators for many other systems like the N64, Atari ST, MSX, PC Engine, Playstation – and even the Bandai Wonderswan! Quite!

For a fuller looking list of emulators available on Android, you could do worse than try this AndroidForums post. Just be aware that many emulators are paid apps, or you can get the “Lite” versions which either don’t allow you to save your games or come with a ton of bundled adware rubbish to pollute your phone.

Finding and converting ROMs

As ROMs for old game systems live in a somewhat grey area of the law as to whether they’re legal to download and use or not, you’re going to have to use Google to track them down on your own. Generally, the older the game, the less anyone’s going to care about you downloading and playing it.

Games for most old systems that work on any standard PC-based emulator should work exactly the same on the Android based emulators with no modification required.

The ROMs for arcade games on MAME though are a little bit different, as the version of MAME that you use will determine which version of the ROM you need. Thankfully, there’s only really two main options between the 0.37b5 versions and the more up-to-date versions, and in general you can use tools like clrmamepro to convert the ROMs between formats.

Input

Dreamcast Fishing Rod Fighting Game - Good luck!Trying to use a touchscreen as a joystick or gamepad is like trying to use a Dreamcast fishing rod to play a fighting game – and it’s a lot harder to pull off a Shoryuken with the fishing rod… So what can we do about it? As it turns out, quite a lot – if you want to use a controller, the chances are that you can get it to work with a suitable amount of research.

The Sony Xperia Play phones come with their own built-in joypad on the slide-down tray, but if you don’t have one of those, then you can still connect bluetooth devices like Nintendo wiimotes, PS3 Six-Axis controllers and XBox 360 controllers* as long as you have a compatible Bluetooth stack on your phone. Older Android phones (certainly my old HTC Desire) didn’t have a suitably functional bluetooth stack by default, but you could get one by installing a CyanogenMod ROM onto the phone. You could probably also use a mini/microUSB-to-USB connector for any standard USB joysticks or gamepads.

* = Wired Xbox 360 controllers aren’t a problem – wireless 360 controllers on the other hand require a USB-dongle, which itself needs drivers which may or may not be available for your device. In fact, from what I’ve seen, unless you have a Motorola Xoom tablet you could well be out of luck for wireless 360 connectivity.

Anyways, for those with a wish to play emulated games using a controller, try:

Output

A small screen is fine to play games on if that’s all you’ve got – but the chances are that you’ve probably got access to a big Plasma/LCD/LED screen with a HDMI input, too. So why not use that?


Skip to the 24 minute mark to see N64oid on the big screen with a wireless controller!

You’ll need an appropriate cable for your phone (usually some form of microUSB to HDMI converter), for the Samsung Galaxy S3 it’s what’s termed a MHL cable – which’ll set you back about $50AUD or thereabouts.

Also, with a phone to HDMI cable, you’ll be able to watch NBA.TV or any streaming video on the big screen from your phone instead of linking up to a laptop or whatever you currently do (unless you’ve got some kind of VNC/Mediaplayer solution up and running – in which case I envy you and would like to know what software you use!).

Honourable Mentions (other best-in-class free emulators)

Missing Sir Clive’s baby? Try the free Sinclair Spectrum emulator Marvin.
Yearning for Chucky Egg? Beebdroid to the rescue =P
Want to perform the woman’s move in IK+? (crouching punch to the nuts!) – try the Commodore 64 emulator Frodo.
Craving some Speedball or Xenon 2? There’s even an Android port of the Ubiquitous Amiga Emulator (UAE) called UAE4droid.

Come to think of it, I’m getting quite the hankering for some It Came From The Desert, or maybe Supercars II

Emulation – you’ve just gotta love it =D

How-To: Configure Future Pinball to play in Linux through Wine

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:

Wine configuration - detecting drives
Wine configuration - detecting drives. Your setup will obviously look a bit different depending on the drives you have mounted.

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.

Step 2 – Install Future Pinball through Wine

Now we need to go and grab the Future Pinball installer from here: http://www.futurepinball.com/download.html. At the time of writing the most recent version is: FuturePinballSetup_v1.9.1.20101231.exe. Although this ships with a few demo tables (very, very barebones) you’ll want at least one table to play, so snag a copy of the Sci-Fi Table installer as well from here: http://www.futurepinball.com/downloads/Sci-Fi%20Classic.exe.

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:

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:

Wine - Select Future Pinball Application

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:

Wine - Future Pinball DLL Override

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:
Future Pinball - Table Select

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.

To find the process ID (PID) run:

Then to kill the pasuspender/Wine process, enter:

So in the above, I’d run:

This will get rid of all wine processes so that after a few seconds when you run ps -ef | grep wine you only see this:

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

Cheers!

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%…

How To: Compile and Use the Dolphin Gamecube/Wii Emulator in Linux

It’s really easy to get this emulator up and working – but you do have to compile it yourself in linux – still, it’s only a couple of commands and you’re set. I did it on Ubuntu 9.10 64-bit and it worked like a charm…

Update (04/07/2011): Easiest way yet – simply add the PPA and get it (for Ubuntu 10.10 & 11.04 32/64 bit only) like this:

Update (Older than above): I found that you can download pre-compiled .deb files for Ubuntu 9.10 here (PPA addition required) – be careful with that sudo apt-get upgrade command in the instructions though – I don’t really think you need it and you probably don’t want to upgrade your entire linux distribution just to play an emulator… I’m confusing sudo apt-get upgrade (which upgrades currently installed packages) with sudo apt-get dist-upgrade (which updates your linux distribution if there is a newer version available) – my bad.

Either way, I’d recommend you just compile it yourself – it only takes a couple of minutes.

Update – Nov 2011: Like anything published, it ages and what might have been correct at the time of writing may no longer be the case – so with that in mind, if you’re going to build your own copy of Dolphin, you’re probably best off going to http://code.google.com/p/dolphin-emu/wiki/Linux_Build and using the instructions there.

Issues: If you’re getting errors along the line of Looking for lib Cg… no. Plugin_VideoOGL must have cg and cggl to be build, then the fix is to install the nvidia-cg-toolkit package with:

With all that done, it takes around five minutes to compile and build, then you can go to the Binary folder inside your source-code download location to find the executable and launch it. Once it’s up and running just go File | Open and point it at an Wii or Gamecube ISO and you’re in business!

Dolphin Gamecube/Wii Emulator

By default you get a gamecube controller bound to the keyboard (Enter = Start button, x = A button, cursor keys up/down/left/right) and an emulated Wiimote is bound to the mouse (where the left mouse button is the A button), but you can use joysticks, real Wiimotes etc as well without too much fuss. Fantastic stuff :)

If you’re having any issues, just read more about linux confix/setup/dependencies here, while the main Dolphin wiki lives here.