I’ve always been a fan of those arcade games from the old days (you know, those big game consoles from mid-90’s you used to see in many bars where you’d insert a coin and play one of many games? I’ve spent quite a few great moments with these consoles when I was younger… Now they are beginning to get rare, unfortunately…).
So, I wanted to be able to play them on my computer, especially now that I have a new laptop and a nice Ubuntu 12.04 install already tweaked “al gusto”. I’d already done it once, some years ago, so I knew the basics about arcade emulation and even remembered the names of some programs. Then I updated my operating system, changed the pc, so I lost all of it. But in the world of technology, things progress very fast, so when I first started looking again, it wasn’t easy to find. It took a little research, especially because the first program I found (and works quite well) is not able to play one of my favourite games (normally each emulator has a list of compatible games – that often grows over time but almost never reaches the total of all games ever created for certain arcade platform). That’s why I wanted to share my findings, so I might make life a little easier for someone having the same interest.
First, a little about the arcade platform for which I was looking for emulation:
It is a ROM-cartridge based arcade board called NeoGeo and was made by japanese company SNK and was produced from 1990 until about 1996 when it was substituted by more modern products. Many popular games were released for this platform.Here’s the Wikipedia article.
The first program I found was gngeo (http://gngeo.berlios.de/), it is quite well known in the Linux emulation world and quite mature and easy to install (some distros even have it in their repositories, that’s how I installed it – along with the graphical frontend xgngeo which makes this emulator very nice and easy to use). I especially like the ease of installation and usage aswell as the graphical frontend. It also is light-weight and seems to work quite well (until now only tested with two games, though), supporting quite a few configurations without getting too complicated.
Unfortunately, it doesn’t run SuperPang, though. Not even the “normal” Pang. Tried to create rom driver files for it (without knowing much, obviously failed…). You don’t know Pang? It’s that great little game where you have to split some “colourful objects” (normally spheres) until they can’t be splitted anymore and disappear. When all objects have been splitted and disappeared, you go to the next level. But if you’re hit by one of them, you lose a life…
I continued my research and found (or “re-discovered”, because I had used it before but didn’t remember) MAME (http://mamedev.org/) and its “derivatives” or ports or whatever you want to call them. This program is a large project (at least regarding number of code lines) because the acronym stands for Multiple Arcade Machine Emulator. One of them is the NeoGeo platform.
The first port I installed (can be found in Ubuntu’s repositories) was the sdlmame port. It does work, and runs Super Pang. But it does NOT feature any of the scale improvement filters which I really, really wanted to have (and which gngeo does feature and I also remembered them from first time I explored the world of emulation). They come with names like hq2x, scale, hq3x, lq2x, etc., and they work by interpolating the image when scaled, thus improving quality (=less rasterization) like explained in this Wikipedia article.
This is very important for me, because most arcade games were made with very low resolutions and today’s screens have high resolutions, so the only choice would be to play a tiny windowed game or to scale with full rasterization (which looks awful).
So I thought: I have to find a emulator capable of playing SuperPang but also of rendering video with a high quality scale improvement filter.
After some research, and having discovered that the xmame port (which I had used some years ago) had died a slow death (and wasn’t mantained anymore), I stumbled on AdvanceMAME ( http://advancemame.sourceforge.net – also not very active nor mantained, but still very available and quite mature).
This is a port optimized and changed so that it supports many, many video modes, even totally weird ones, designed to drive directly real arcade CRT monitors. Or anything you like. And it also has the hqx algorithms, aswell as many other filters, included by default. All this, obviously, makes the program quite complicated to configure. It’s not in any modern distro’s repositories, AFAIK. But fortunately, it is easily available and compiles without hassles and doesn’t need too much support libraries. So I managed to install it with success. But then I still had to figure out configuration. After reading through lots of documentation and searching the net, I found the necessary options (for the config file which is – at least on my system – located in .advance/advmame.rc in my home directory) and list them here, for your delight (:D) :
To get sound working, I had to use these options:
device_alsa_device dmix
device_sound sdl
Video options (I have a widescreen laptop):
device_video_output fullscreen
device_video sdl
display_aspectx 16
display_aspecty 9
display_expand 1.2
display_magnify 2
display_mode sdl_1366x768
And finally, for the hqx filter to work correctly, I have to use this:
display_resize integer
display_resizeeffect hq
Image format is a little bit distorted (the display_expand tries to correct this, but 1.2 isn’t the 100% correct value, although close), but quality is great, emulation works fine and quick and games are totally playable.
Success! 😀
Another great game I like to play, by the way, is Metal Slug. Here, you are the hero who has to progress in a virtual world full of unfriendly (though stupid) soldiers and their tanks, machines, buildings, planes, etc, all of them being the army of some crazy dictator inspired by Adolf Hitler and you have to kill them all – with obviously extremely powerful weapons and fantastic little funny details in the middle.
This is also the game I used for comparing the emulation of gngeo and mame. This is what I found:
Sound is much better in Advancemame.
Video performance is similar in both.
Image quality is also very similar, although gngeo seems to have a tiny bug: about 10% of the image on the left and right side is cut away.
Screenshots (made with digicam because I couldn’t take real screenshots):
(just a final notice: for those who don’t know arcade emulation, you might have been wondering how and in which form you get the games themselves. They come in so called “ROM-dumps”, normally in zip files, which is basically a dump read from the original ROM cartridges. They can be found on the internet, but due to their “slightly dubious” legal status (remember they are “copies” of original, paid and copyrighted products) I can’t give you any direct links. Try searching for neogeo roms in google.)