MAME 0.163 was released a couple of days ago, but I’ve been rather swamped down and haven’t had a chance to write about it (nor finish the writeup for last year, which I haven’t had time to touch in about 3 months)
0.163 is actually a rather light release, it cleans up a couple of reported issues from 0.162 including some long-existing MESS-side bugs that ended up being reported with the increased number of users after the projects were merged. Along the same lines the uimodekey commandline option was also ported over from SDLMAME which is very useful if you’re running an emulated computer and are using a keyboard that lacks a SCRLOCK key.
From the Arcade emulation point of view the most significant thing in 0.163 is probably the discrete sound emulation for Kid Niki and Horizon. The downside to this is that it has slaughtered the performance of the driver, even for some games that don’t make use of the analog drums at all to my knowledge (The Battle Road). You can expect around 250% speed at most on a 4ghz i7 with the new code (down from over 4000% without it) I’m not sure that will improve because emulation of discrete components is always going to be expensive. Speaking of The Battle Road I fixed the colours in that with the help of caius providing a PCB reference.
The Analog sound in Kid Niki and Horizon was done by Couriersud and Andrew Gardner, I’ve uploaded a video of it here (and yes the pops and crackles happen in the emulation, they’re not artefacts of the video)
The Z80 TV Game System emulation is an interesting one too, it’s basically a modern (but very simple) ‘homebrew’ console based around the Z80 CPU. As it actually exists it is eligible for emulation and so ended up being emulated in the MESS side of the project, the games however are reminiscent of the late 70s B&W games. You can see details about the hardware here. Definitely one of the submissions I found most interesting this round, and clearly demonstrates the diversity of the project.
Air Rescue and F1 Exhaust Note are now set up properly as twin display games without hacks, as per the previous news post, however in addition to that SailorSat also contributed some code to simulate the link features of a number of other Sega PCBs across multiple instances of MAME; you need to know what you’re doing to use them however, it’s not exactly plug-and-play like the actual twin display ones are.
The C64 control issue I talked about in the Donkey Kong article has also been fixed, although from various information that has been supplied it sounds like a real fix might be more complex as apparently bits on one of the IO chips can apparently still function as inputs even when configured as output if the external hardware is set up in a certain way, the C64 is set up in a way that causes this to happen, the Amiga is not, so until it’s done properly there could be conflicts.
I was able to run 2 disk images of the Ocean (Europe) version of Donkey Kong successfully.
mame64 c64p -flop1 “Donkey Kong (1986)(Ocean Software)[cr New Stars].d64″
mame64 c64p -flop1 “Donkey Kong 5H NTSC FIX (Remember-Crypt-WDR).d64″
The tape image, and non-cracked version do not appear to function, I’m guessing they fail some kind of copy protection because our emulation isn’t accurate enough. (or maybe you need to disable the disk drive to run the tape one, I’ve heard of other cases where that’s true, haven’t checked)
The issue I was having with the PC version of Raiden which meant I didn’t include it in the ‘What to Do in 0.162′ articles was also apparently fixed, haven’t had time to check it out yet tho.
R.Belmont documents an important fix made to the Apple II emulation regarding how we were generating raw signals based on some disk image formats, see here. It was causing at least one non-copy protected image to fail simply due to the timing being slightly off, so very good to see it improved; accurately simulating a floppy drive is much more difficult than you’d imagine.
Sometimes small discoveries are important too, the X1-010 audio fix for downtown actually implements a previously undocumented register to control the sample rate, could affect other things too.
There is also a preview of what could become the new build system, allowing ‘tiny’ builds to be made easily just by specifying the drivers you want to be included and having the build system work out the dependencies. This could eventually replace the current Arcade/MESS sub-targets as it allows much more focused builds for development.
All in all 0.163 is not a major update (I suspect major updates will be rare, there’s simply not much left that will grab people’s attention – Andreas was looking at Namco System 10 but the encryption appears to have got the better of him at the last hurdle, and my time is also more limited than ever due to Real Life too) but steady progress is good progress.
Sega’s Air Rescue is a spiritual successor to the game Choplifter, you fly around surrounded by enemy vehicles while attempting to land to pick up hostages. Jaleco used the same concept for their overhead perspective ‘Desert War’ too.
The twist with Air Rescue is that while Choplifter is a side-on view, and Desert War is an overhead view the entire game here is presented in a 3d perspective using zoomed sprites.
The game used Sega’s System 32 platform and has been partially emulated in MAME for a long time now. I say partially emulated because we needed some hacks to get it running. The thing with the Air Rescue hardware is that it actually uses 2 stacks of System 32 PCBs which are directly connected using a bridge board placed under the rom board. That bridge board contains RAM which is shared between the two System 32 stacks.
With the real hardware if either of the System 32 PCBs or the bridge board fails / are missing the game does not boot, it is designed to work in the 2 screen, 2 player cabinet it shipped in only. MAME hacked around this faking the response from the 2nd PCB stack in order to avoid emulating it, this however had some unwanted side effects.
For a start, the title screen was cut in half the first time of showing, and subsequent times the single screen title that is meant to be used while the other player is playing was shown. This also meant the intro sequence was never shown in the attract mode. More importantly half the gameplay was missing, the dual screen setup means the game can actually be played as a co-op game in addition to being a single player game, in co-op mode each player flies their own helicopter around the same arena and the number of hostages to rescue + number of enemies is increased to maintain the same level of challenge.
MAME has a nice device based system these days, so by promoting an entire System 32 PCB to be a device, allowing for two to be added to a driver with the shared RAM added just like any other shared RAM, I was able to quite simply emulate this properly.
Note this isn’t a ‘network’ game as such, there are no network cables, it’s a simple case of doubled up hardware. Sega would later refine their system into the ‘multi32′ board which was capable of driving 2 screens on it’s own with half the video capability on each, these full-fat setups were obviously more expensive. The multi32 system was already emulated with both screens (although I do need to look at some bugs that were introduced way back when Aaron rewrote the driver then never fixed the reported bugs)
I’ve also made a video, note the sound is rather chaotic because you’re hearing the output from both monitors, which often end up playing the same tune with a slight delay causing an echo effect, this would sound less harsh if sat in front of the speakers for each screen on the cabinet.
F1 Exhaust Note uses the exact same type of link board and benefits in the same way, note how you can see the position of the other players car marked on you screen with an arrow in the final 2 gameplay shots.
F1 Super Lap is a linked game instead and hasn’t been touched.
For the curious, Sega also released an ‘Air Rescue’ game for the Sega Master System, this 8-bit game has little resemblance to the arcade and plays more like a traditional sequel to Choplifter. With the MAME/MESS merger of 0.162 you can now play this in MAME using the launch syntax of “mame smspal airresc”
As well as the very simple to use Console based systems the new MAME also emulates a number of home computers.
Before you start there is one very, very important thing to keep in mind when running a computer in MAME, the default state of emulation is to give the entire keyboard on the system to the emulated machine, meaning that none of the usual MAME keypresses will activate MAME functions, this even means that in this state ESC no longer exits MAME, F3 doesn’t reset the system, P won’t pause/unpause etc.
By default there is one key assigned to toggle this mode on and off and that key is SCRLOCK (Scroll Lock) However some laptops and other modern keyboards (including my wireless Logitech) don’t have this key, so you’ll need to assign something else.
If you’re in that situation then (assuming you have MAME already setup, including ROM paths etc.) you should launch MAME with no parameters and use the internal menu to do the following:
Scroll down to “Configure General Inputs” select “User Interface” select “UI Toggle” (it’s about 70% down the list) and assign a new key to it, one that is out the way and unlikely to be used by the emulated systems, personally I picked ‘END’
I will refer to this key as ‘UI TOGGLE’ for the rest of this document, please be aware that if the UI is in ‘active’ state and you press ESC then you WILL exit the emulation so it’s important to remember to toggle it back off after each time you need to use the UI.
King of Kong – Arcades
In the previous part of the article I looked at how the integration of MESS made it easier to explore the different platforms to which a game was officially ported, this time I’m going to look a bit at how you can see the influence of a game, including both official and unofficial ports.
Even with just the Arcade side of things Donkey Kong is a game with an undeniably huge influence. In MAME, for a long time, there have been a number of takes on Donkey Kong, the arcade original looked like this:
Even in the arcades there were a number of games that ripped off Donkey Kong. Crazy Kong is probably the best known variant of Donkey Kong and has a fair bit of history, and mystery behind it. While very similar in appearance it’s actually a very different piece of code to the original game. The Brazilian ‘Kong’ falls into the same category, it uses the Donkey Kong graphics, but the codebase is entirely different, resulting in a very stiff game with some redesigned levels; don’t be fooled by how similar it looks, there’s not a shred of the original Donkey Kong code in it!
The influence extended beyond games that were basically just creative bootlegs of Donkey Kong too, the CVS system game ‘Logger’ for example directly took the Donkey Kong concept but gave it a woodcutter theme.
Even years later the game, and it’s sequels ended up being copied, one example is the ‘Tong Boy’ game within YunSung’s ‘New Multi Game’
Let’s not also forget the unofficial sequel ‘Jump Man Returns’ which was made much more recently (2006) and plays out the idea of a sequel running on a modified version of the original game engine using the original hardware; quite a few PCBs actually ended up being converted to run it! Even more recently there were mods like the ‘Pauline edition’ where you play as the Heroine instead of Mario, although that one hasn’t yet made it to MAME (I’m hoping with the addition of the MESS stuff, and the more open / relaxed attitude towards after market developments it will)
Beyond that there were numerous games that were clearly influenced by the game mechanics of Donkey Kong without actually being the exact same idea as Donkey Kong, there’s little point in me covering all of them, but needless to say it was a very influential game.
King of Kong – At Home
So that’s all things that were available in MAME already, so you’re probably asking ‘where does the newly added MESS component come in?’
Donkey Kong is a much earlier game than the previous covered Raiden, so the systems it was ported to were quite different, this was the 80s when home computers were commonplace.
The first port of Donkey Kong I’m going to look at is one of the most recent additions to the emulator, added in 0.161 it’s the Coleco Handheld which looked something like this
A little background information is possible required here. This was 1982. While today you have machines in your pocket that are often more powerful than the PC sitting on your desk, in 1982 we didn’t, even the original GameBoy was not released until 1989, and the only real handhelds with a video display to speak of were things like the Microvision with a 16×16 pixel display.
In order to make something with reasonable art a different approach was taken, instead of trying to make up a screen of pixels VFD based displays were used, this allowed the manufacturers to use actual art to make up the game graphics by turning on / off various playfield elements. You can see one of the actual units here . Obviously this technique means animation is non-existent and what could be done with the games was strictly limited, but the Donkey Kong handheld made a brave attempt at simulating both the barrel and rivet levels and has been quite fondly remembered.
I’ve uploaded a YouTube video of this below to better demonstrate it. To run this in MAME you use ‘mame cdkong’ be sure to have the ARTWORK FILE in your artwork folder too because it’s not really playable otherwise.
If you didn’t read the important note at the top of the article now is a good time to read it because we’re going to look at some of the home computer versions of Donkey Kong, there were many of them, I can’t possibly cover them all, but to help people understand the functionality it’s worth looking at a couple.
One of the most critically acclaimed ports of Donkey Kong was the one to the Amstrad CPC, and I’m not surprised, for a system that received, for the most part, shoddy reworkings of Spectrum ports that were unflappably slow this is an absolute gem.
Now, for some reason running the cassette version of the game in the base Amstrad CPC464 driver results in raster timing glitches, I’m not sure why, it just does, I guess it might be because the CPC has the disk rom hooked up by default when really it should only be available if you plug the expansion in, but then I’ve noticed it works fine on some of the other models with a disk drive.
Either way, there is an Amstrad clone, the KC Compact, and we’ll be using that for our first example.
Launch MAME with ‘mame kccomp -cass1 dkong” this will launch MAME with the KC Compact drive running, and the Donkey Kong cassette (from the Software List) inserted into the cassette deck. Without loading the game however it will just sit there.
To get us moving type
and press enter, this will prompt you press PLAY then any key. The order you do this doesn’t matter here, so hit a key.
In order to start the tape playing you must enable the MAME interface keys, this is where the text at the top is important. Hit ‘UI Toggle’ (SCRLOCK by default) to enable the MAME keys.
Press F2, this is the keyboard shortcut to start a tape. A timer (3 minutes 36 seconds) appears in the top corner and the game begins to load. Hit the ‘UI Toggle’ key once more to disable the MAME keys again and hand the keyboard back over to the emulated system.
Wait. Eventually the game will load.
The graphics are fairly low resolution, but the look and feel of the game is spot on. Remember, if you want to exit the emulator hit the ‘UI Toggle’ key (SCRLOCK) before pressing ESC.
So far everything that has been covered in this articles has been loaded from the Software Lists. For ROM based games that is absolutely the correct way to go about things as the Software Lists often contain information about what was inside the cartridges, so some features like backup RAM might not end up being emulated properly if the Software Lists aren’t used, however for software that was on Cassette, Disk, or even CD Rom it is useful to know that unlisted software can also be loaded.
For the next example I’m going to look at one of the other 8-bit systems, the Sinclair ZX Spectrum.
Donkey Kong isn’t in the ZX Spectrum Software List (yet) so head over to the World of Spectrum and grab a loose copy. DonkeyKong.tzx.zip should do the trick, unzip it into your MAME folder so you have DonkeyKong.tzx sitting in the same location as your MAME.exe.
Launch MAME with ‘mame spectrum -cass1 “Donkey Kong.tzx”
this causes MAME to launch with the loose cassette image of Donkey Kong mounted in the cassette deck.
Now unlike the Amstrad, the Spectrum can be a bit of a pain when trying to load something because the build in BASIC uses a Macro system, meaning instead of typing words you must press keys that correspond to keywords. Luckily for loading a game you only have to know how to enter the command LOAD “”, which is ‘J’ (for load) then ‘Shift+P’ twice, for the “” part. After typing that, hit enter. The later Spectrum models have other easier ways of loading games, but not all software is compatible.
The procedure to start the tape is exactly the same as the CPC, hit the ‘UI Toggle’ (SCRLOCK), hit F2, tape starts playing, hit ‘UI Toggle’ again.
Not the best version of Donkey Kong, you can tell it’s meant to be Donkey Kong from the basic level structure but the graphics are dull and flickery and the controls / movement doesn’t really feel correct either.
With some of the systems now supported you’ll need to configure slots before launching the driver (unfortunately MAME still doesn’t support changing many of these at runtime which causes a problem with some games) To play the Commodore 64 (c64) version of Donkey Kong for example you’ll have to tell MAME that you want a C64 joystick inserted into one of the control ports. The launch syntax to do this is
“mame64 c64 -cart1 dkong -joy1 joy”
The Donkey Kong game in question is loaded from a cartridge, so the actual loading part is easy (loading a C64 game from Tape / Disk requires more effort) but without the -joy1 joy part, telling MAME that you want a joystick inserted into the first Joystick port it is impossible to control. With that added the game boots, can be started, and plays a reasonably good game of Donkey Kong.
One issue that was touched upon with the mention of the Spectrum is how some systems can be rather difficult to operate simply because the original keyboard layouts were so different to PC layout we have today. While the Macro based inputs of the Spectrum couldn’t really be made any easier there are cases where MAME can assist a little, by attempting to remap keypresses transparently. The option to enable this is ‘-natural’
A good example of where this is useful is the MSX. By default the ” symbol is very difficult to find when running the MSX driver (in all honesty I don’t know where it maps) but if using the ‘-natural’ option it maps to the same place it does on a PC keyboard, Shift + 2.
Let’s launch the MSX driver with that option for an example. MAME doesn’t have a generic MSX driver as the MSX was just a rough specification for a machine rather than an actual machine. One machine based on that specification is the Canon V-20E (canonv20). The following commandline is used to launch “mame canonv20 -cass1 dkong -natural”
This starts up the MSX driver with the Donkey Kong cassette in the cassette desk.
To start the tape loading you must type
In the case of the MSX driver the tape then automatically plays.
For the game in this driver I’ve found that once the game has loaded you must select ‘4’ (Joystick) in order for the controls to work well, I’m not sure if this is a conflict with the ‘-natural’ option or something else.
It’s an Ocean Software port, so very similar to the Spectrum version but with more colours, less flicker and generally improvements all round.
If you’re feeling lazy and pick an MSX model with a floppy drive then there’s actually a version of Donkey Kong available on Floppy Disk too.
The Expert DDPlus (Brazil) is one such MSX model, so using the launch syntax “mame expertdp -flop1 dkong” will load the floppy version from the Software List, exact same game tho.
One thing I mentioned is influence, and an influential game leads to people still giving it care and attention many years later. Back in 2007 ‘Sock Master’ decided to do a port of the Arcade version of Donkey Kong to the CoCo 3 computer, with the goal of creating something as close to the arcade experience as possible.
In the end he succeeded in creating this port, although admitted that it performed better on a modified machine, one with the CPU upgraded. MESS was generally open to supporting unofficial modified hardware configurations (as long as they actually existed) so has a machine with precisely the recommended upgrades available by default. MESS was also open to some ‘homebrew’ software being documented, so this port made it’s way into the Software Lists.
To launch we use the simple syntax
“mame coco3h dkong”
Before going anywhere else it’s wise to hit the ‘UI Toggle’ key (SCRLOCK) bring up the TAB menu, scroll down to Analog Controls, and adjust the AD stick X and Y Digital Speeds and Auto Center speeds up to 50, why? because the system used Analog Joysticks, and the default mapping of ’10’ for the speeds makes the game very sticky. With the settings adjusted close the TAB menu (press TAB again) and hit the ‘UI Toggle’ key once again to give the system full keyboard access.
The game is on a floppy disk, to see the content of the floppy disk type DIR and press return. You can see see several files listed, the one with the .BAS extension (BASIC) is the game loader and the one we’re interested in, it’s called DONKEY.BAS. To run it just type
and hit enter
once the game has loaded you’ll want to hit ‘P’ to change the Palette Type to CMP (Composite) or the colours will be ugly ingame. By default the controls map to the numpad, NUMPAD0 is credit/start, and the 8/4/6/2 directions move your character.
Sound is a bit crackly (possibly our emulation, or a filter on hardware makes it sound better) and the game skips a few frames (the original machine isn’t quite powerful enough) but it’s a very solid effort and looks+plays great due to being a direct translation of the original arcade code.
Some ports are really easy to get going, the Apple II port for example
“mame apple2p dkong”
With that, the game auto loads and can be played using the Numpad, not a great port, but still recognizable as Donkey Kong.
So far all the versions that need to be loaded via BASIC have been fairly straight forward, and have auto-ran after the initial load sequence. That isn’t always the case however, some need a little more attention, and a little more knowledge of exactly what’s on the tape you’re trying to run. Another thing that you get with certain systems is the ability to configure different RAM sizes as many of these computers came in different models with different amounts of RAM depending on how much you were willing to pay, or modify your machine.
One example that ends up incorporating both of these elements is the Colour Genie EG2000. There was an unofficial port of Donkey Kong to the machine known as “Colour Kong” It was available in 2 versions, a 16K version and a 32K version, we’re going to look at the 32K version.
The launch syntax we will be using is “mame cgenie -cass1 colkong32 -ramsize 32K” The -ramsize 32K option configures the machine as a 32K machine, it’s 16 by default, the valid options here are defined in the driver.
The built in BASIC for the machine is incredibly unintuitive. The first thing I’d recommend is hitting the ‘UI Toggle’ key (SCRLOCK) to enable the MAME controls, we’ll need them in a bit to start the tape.
Upon booting you get a MEM SIZE prompt from the machine, just hit enter, at that point it will say COLOUR BASIC and READY.
The first command you need to enter into the emulated machine is
entering this, and pressing return gives you a *? prompt
This prompt is expecting you to enter a filename, to operate this system it appears you actually have to know the name of the file on the cassette, which is inconvenient to say the least. In this instance the filename is KONG32, so type KONG32 and hit return.
The system won’t prompt you to press play on the tape, but that’s exactly what it wants you to do right now, so hit F2 to start playing the tape. It takes about a minute and a half to load the game, during that time you’ll see some * symbols in the corner. After loading it returns you to the *? prompt
Again at this point it isn’t obvious what you must do, the game doesn’t auto-start (some games on the system do, but this isn’t one of them) to boot the game you must type a / symbol and press enter.
‘S’ starts the game, arrow keys move, Z is jump. It’s an unofficial port to an obscure system, and the barrel level is really tricky, but it does look like all the levels are implemented!
Another unofficial one I’ve since been made aware of in the comments below is the BBC Micro game ‘Killer Gorilla’ The BBC was another popular UK system, so it doesn’t surprise me to see somebody wrote a DK clone for it.
Launch the emulation with “mame bbcb -cass killergo”
I don’t recommending using the -natural option here because it does interfere with the keyboard controls of the game, so when typing the following commands into the emulation you’ll have to be careful because the keymapping isn’t entirely obvious.
To load the game you must type
pressing return after each line. The tape will auto play and the game will load.
As I mentioned the key mapping isn’t obvious but on my keyboard the * symbol maps to the @ key, just up and left from the right shift key, this is also one of the game controls (climb up ladder)
Nintendo released versions of Donkey Kong on their own platforms too, one many people encountered is the NES version, it’s a decent port of the game. “mame nes dkong”
That’s an easy one out of the way, now let’s look at something a bit more complex again.
For some systems you have to attach additional hardware before slots become available. One such system is the Famicom, aka the Japanese version of the NES. The Famicom had a ‘Disk System’ addon which allowed for games to be distributed on Floppy Disk. To use the Disk System add-on, and thus play games on Floppy you had to first plug it into your main system. In MAME you have to do the same.
There are two ways of doing things from here, option 1 is that we launch the Famicom with
“mame famicom -cart1 disksys”
this boots to the disk system bios.
from there you can press TAB to bring up the MAME tab menu, scroll down to ‘File Manager’, select it, scroll down to ‘floppydisk (flop)’, select it, scroll up to ‘[software list]’ select it, then ‘Nintendo Famicom Disk Images’, select that, then just type dkong to scroll the list to Donkey Kong and hit return. Assuming you have the ROMs available and where MAME can find them that will work. While for the purpose of this example I’m just loading Donkey Kong, which is identical to the NES version, there are a number of unique titles for the Disk System too.
The other way to do the same thing (without having to navigate all the menus) is to simply launch with
“mame famicom -cart1 disksys -flop1 dkong”
however navigating the menus is good practice for some more complex cases you might encounter later, where you have to change disks at runtime.
The majority of the rest of the Donkey Kong versions I managed to launch were easy cases, there are 3 of them for Atari Systems
The Atari 2600 had a very basic looking version of the game, with minimal presentation
“mame a2600 dkong”
There was an Atari 800 version..
“mame a800 dkong”
and an Atari 7800 version
“mame a7800 dkong”
The interesting thing with the Atari 7800 version is that back in 2012 a new version was released to make use of the XM expansion card for the A7800, this expansion card added High Score Save support as well as additional sound chips. The original A7800 version of Donkey Kong has rather awful sound, so ‘TEP392′ decided to reprogram the game, improving it in significant ways. He released demo versions of this to the public to show off the improvements. The Demo version is softlisted, and our emulation does support the XM unit, unfortunately support seems to have broken at some point causing the Pokey to output static instead of the new music meaning I can’t really add that one to the ‘Things to try’ list for now.
It would appear that the Software Listed version of the XM Enhanced Donkey Kong does NOT work, however the one that is listed as MESS compatible (dkxm_demo_v12_ntsc.a78) does – for some reason none of the files on that page are recognized, I guess they’ve been updated since it was originally added to the list. The version that is listed as for the real hardware works the same as the one in MAME, ie the Pokey doesn’t work, according to etabeta it did work at one point(?) but I don’t know.
Either way, with that loose file you can launch the enhanced version.
If you set the Level order to Japan and start level to 2/3 then you get to see the newly added Pie Factory level too, something which was absent from the original A7800 release.
The Gameboy got a port of Donkey Kong too, however it’s not really faithful to the original game logic, you can do some back-flip type jump instead of using the ladders at times!
“mame gbcolor dkong”
The Gameboy version was also special in another way, it was one of a handful of Gameboy games to have ‘Super Gameboy’ support. The Super Gameboy was an underutilized expansion device for the SNES which allowed Gameboy games to be played on the big screen with extra content (typically more colours, and a bezel) Most SNES add-ons are supported in MAME via the slot device system, however the Super Gameboy hasn’t been fully converted yet and is treated as a standalone system. For the purpose of running Donkey Kong this is good enough.
“mame supergb dkong”
The Intellivison got a basic, slow and ugly port of the game, remember to use the numpad to select difficulty etc. or it looks broken.
“mame intv dkong”
The Colecovision port plays well, but has minimal presentation
There was also a TI99-4a port
“mame ti99_4a donkeykg” (really this should be renamed to dkong to be consistent with the rest)
This one also plays a good game.
Venturing well into obscure territory is a port that was done for the BeLogic Uzebox. The Uzebox driver is marked as NOT Working in MAME, and lacks sound, but the actual gameplay of the Donkey Kong port runs fine, it’s not a great port, and the emulation does struggle to maintain 100% even on my 4Ghz i7, but it’s an interesting one because it shows how we’re interested in emulating these ‘Open Source’ games consoles and the homebrew software developed for them.
“mame uzebox dkong”
Not All Working
That concludes all the versions of Donkey Kong I could get working, there were a couple of others I couldn’t, the Vic20 version for example hangs on the title.
The GBA version which is a ‘NES Classics’ release doesn’t work because those have some kind of anti-emulator protection on them that our ARM core fails, the IBM PC version is out of the scope of this article to run (if I do a Part 3 I might cover it) and a number of the other cases where there is a Donkey Kong port the drivers are just skeleton drivers or don’t seem to have the tape / floppy hooked up to a point where it can be loaded. There are one or two others that are just direct ports of existing versions too. There are a couple more fan remakes that aren’t in the Softlists yet that I haven’t covered, and countless commercial rip-offs that wanted a chunk of the action from back in the day, but I feel I’ve covered enough here to demonstrate the features of the emulator I wanted to demonstrate. One significant thing I haven’t covered here at all are the Donkey Kong licensed Fruit Machines, those were rather interesting too, but as our drivers in MAME don’t yet work there’s nothing to show yet.
It should be noted that for a lot of the systems covered here MAME isn’t the absolute best emulator available, however, it’s certainly good enough for many use cases, as hopefully all these different versions of Donkey Kong running demonstrate. Knowing which machine to use, or how to configure the machine you want to use can be a challenge, and in some cases you’ll need to do a bit of research (I had to myself here for loading an MSX game from cassette) but don’t let that put you off, plenty really are just as easy to use as any arcade game.
What’s interesting with Donkey Kong is that while it was ported extensively outside of Japan there don’t seem to be that many cases where it was released on home systems in Japan, this contrasts greatly with the output of Namco where their most popular games were ported to a wide range of Japanese systems. Covering some of the Japanese systems is definitely an area I should consider for a follow-up article too because the obscure Japanese systems have some good ports and in many cases are an area in which the MESS code we’ve imported really excels.
I hope some of the things covered in this little write-up have been useful and again help show exactly what new abilities having the MESS code integrated has opened up to people. I think it’s fair to say that MAME is now the King of Kong, you can trace the game right from it’s arcade origins down to the best and worst of ports
*If* I do a Part 3 it will likely cover some even more advanced use cases for the emulator, such as using the PC emulation where you need to install the operating system first. I was going to do that using Raiden as an example (like Part 1), but have since discovered it suffers from an emulation glitch meaning I need to rethink my plan there.
As is now well documented MAME 0.162 is the first MAME build to officially ship with the MESS drivers included, giving you a whole host of extra capability for absolutely no extra cost on your part.
While this addition is aimed at showing the more serious side of the project it can also be a lot of fun. The big advantage is that you need only configure one emulator, MAME, after which you have, at your fingertips, the ability to run a whole lot more than ever before.
Let’s say you’re a fan of the Raiden series, you’ve likely experienced the original arcade version in MAME a few times, and maybe even recently Raiden 2 / DX which were emulated.
Prior to 0.162 that was the only version of the original Raiden you could run using MAME, for anything else you’d have to use a different emulator such as one of my UME builds, MESS, or various other console / computer emulators.
As of 0.162, without having to look at any other emulator you have the option to do so much more. Raiden had a lot of ports, maybe you weren’t aware of them, let’s look at some of them.
One of the best ports of the original Raiden was the one to the FM Towns / FM Towns Marty. This version, which is documented in the Software List, can be launched with “mame64 fmtmarty raiden” (make sure to use the Marty driver, not the regular FM Towns one, the keyboard / joystick input mappings conflict with each other on the FM Towns by default leading to control issues)
Visually it’s nearly spot on compared to the arcade version, gameplay wise it’s based on the Japanese version so it uses checkpoints, but what really sets it aside from the Arcade is the use of CD Audio for the soundtrack, meaning this game, while playing almost perfectly compared to the arcade also features a brand new arranged soundtrack at CD quality. The only thing it really lacks seems to be a rotation option, which is a shame if you want to run it on a vertical monitor.
From one of the most accurate ports, let’s look at the most stripped down, the Atari Lynx version. Like everything covered here this in the Software List and can be launched with “mame64 lynx raiden”
Obviously this is a port to a very simple handheld system, so it only bares a passing resemblance the the original. It’s interesting in that (to my knowledge) it’s the only handheld port of the game, and actually managed to maintain the look and feel of the original game fairly well once you consider the system they had to work with.
Back to fairly accurate ports let’s look at the Playstation release. This can be launched with “mame64 psu raidenpr” (Only the US version runs, there’s some kind of weird disc protection on the Japanese rips)
The Playstation version contains both Raiden and Raiden 2 (a very good port of Raiden 2 at that, possibly better than our current emulation) but for the purpose of this I’ll focus on Raiden 1. The graphics are the same as those found in the arcade game, it has both Horizontal and Vertical modes for if you want to use a Vertical screen (although you’ll need to remap the controls to play that properly, but MAME’s internal rotation at least makes it very easy to rotate the display)
The PC Engine had 2 releases of Raiden, the original ‘Raiden’ was a regular cartridge game, while Super Raiden was a CD release with full CD soundtrack. Visually these are downgraded a bit from the arcade as it’s a weaker platform, but again they give you a slightly experience as a result.
The launch syntax for Super Raiden is the slightly more complex “mame64 pce -cart scdsys -cdrom sraiden” (because you have to insert the CD cart into the PCE cartridge slot in order to play CD games in the CD drive) For the regular Raiden it’s simply “mame64 pce raiden”
One of the worst ports of Raiden I’ve played is the Atari Jaguar one. While the console should have been more than capable of running a game like Raiden it appears that the company porting it simply created a game that looked a bit like Raiden, but really doesn’t feel much like it at all when you play, everything simply feels a bit off. The Jaguar driver in MAME isn’t very good and doesn’t run many games, but Raiden is relatively undemanding and plays fine. “mame64 jaguar raiden”
The Genesis port is the one I’m more familiar with, the colours are a bit drab compared to some of the others but it plays a good game and is actually one of my favourite shooters on the platform. “mame64 genesis raiden”
The Snes port gives you yet another take on it, visually it’s less drab than the Genesis version, and doesn’t have the side bar obscuring half the view (so in that sense it’s closer to the PCE version) but it does apparently have quite a lot of slowdown. “mame64 snes raiden”
By integrating MESS in 0.162 we’ve given the opportunity for anybody with more than a passing interest in games to dig a bit deeper and see what they can find, to me that’s beautiful and being able to see all these different versions of Raiden without having to switch emulator at all is just pure bliss. I know some people are trying to throw a negative slant on it, and some of the builds that already like to do things we request aren’t done are already stripping out the extra content along with the nag screens (the main one of which was actually already removed in 0.162) but in the end that ends up being their loss, I’ve already read people saying they’re going to migrate away from those builds because they no longer offer the full MAME experience.
There is actually some other stuff that’s brand new to 0.162; emulation of the original Tamagotchi is actually a landmark moment, as a piece of technology it had a huge influence, and the emulation of it is easily as significant as the emulation of the original Pacman arcade, just remember to run it with something like “-prescale 3″ to avoid it being a blurry mess.
The Golden Tee Fore! stuff already mentioned is also working in 0.162; if you have performance issues be sure to set the resolution dispwitch to Low, that way a high end i7 should run it without frame drops or audio stuttering.
My message is simple here however; if you’re willing to embrace the changes made to the project, put a bit of effort in to learn how the new content works, have an open mind to explore some of it, and want to get a real insight into the industry back then, including how the arcades and home systems influenced each other, which software houses worked most closely with the original manufacturers to provide accurate ports, and where developers too liberties etc. then the new look MAME 0.162 is likely to be the first step in providing a very worthwhile experience.
If you’re closed-minded, unwilling to accept change, are lazy, or just want to be rebellious on the other hand, I can understand why this might not be for you ;-)
The UME project, which began life as ‘Ultimate MAME’ in 2011 has dissolved into what from this point on will simply be known as MAME.
The option to build an ‘arcade only’ version of MAME remains as a subtarget, and likewise you can still build MESS if you have no desire for the arcade drivers, however the default ‘out the box’ configuration is now one that encompasses ALL the work that is being put into the project. I expect the other build options will evolve over time to become more hardware focused for example, allowing you to build a solution containing all drivers using a given device (which would obviously be beneficial to development) The way we generate the build solutions now using Genie gives us the possibility to explore more options in the future.
At the same time you’re also seeing a drive to clear up the licensing a little more. This, like the above, is just a step in the project maturing. As an arcade-only emulator it was easy to write MAME off as nothing but a toy; while it did have a number of other uses the majority of what it did (and what people ended up using it for) was run games. By bringing in the more serious side of the project we end up with a more professional piece of software with numerous irrefutable uses that extend well beyond any simple misconception of the project being nothing but a toy. With that more professional front to the project the need for a standard license also becomes greater, and I also feel more comfortable in re-licensing my code to be more permissive knowing that it is part of something that has many more legal uses. Obviously a number of the issues with older code that were raised before remain, but we’re in a better place right now than back then.
The main topic for discussion when it comes to MAME doing more than just arcade games is ‘what does MAME stand for’. While people like to put forward suggestions for new names still fitting the acronym I think the most important thing is not to focus on what the letters stand for, but to simply focus on what MAME as a brand stands for. For the longest time now ‘MAME’ has represented a bridge between the past and the present, a project providing a platform to keep creations of the past accessible, providing documentation (an insight into how things worked), reusable components, and importantly a place for those interested in emulation to do their work. Just like nobody really thinks of ‘SEGA’ as ‘SErvice GAmes’ the traditional meaning of the MAME acronym is less important than actual work we do.
If you still want something to mentally associate with the ‘new MAME’ then the suggestions of “MAME And MESS, Emulators” and “Multiple Archaic Machine Emulator” do strike a chord with me, but I doubt the official acronym will be changing, it simply represents where we came from.
People have asked what my opinion on all of this is, probably expecting me to have a lot to say about it now that it’s finally happened, however, I don’t. I don’t mind that the UME brand is gone, it was a fun thing, and yes, I did like the name (EMU backwards, the combination of two things ‘U and ME’, the way it was creatively used in the word ‘ConsUME‘ etc.) but in the end the project was only ever a means to an end, a way of showing that the projects could work as one, and a way of ensuring no further conflicts between the projects crept in after they’d ended up really quite far apart at one point. The brand has served it’s purpose.
I think, as the project grew up, this kind of change was inevitable; just as arcades saw a steep decline interest in the baseline MAME project saw a steep decline; hardware we were emulating was being better tested by non-arcade systems, and a lot of developers were already starting to write more code for the emulation of non-arcade systems than arcade ones. The flexibility and design patterns required for the non-arcade systems were already starting to define the project too, leading to better more reusable code. The source repository used for both projects already existed under the ‘MAME’ name only, the source distributions were already shared, and releases were already being made from the exact same code revisions. Mametesters has also already been taking bugs for the non-arcade side for a while, and a number of other sites were providing support for both due to improved awareness that they really are both built from the same sources. In that sense what we see isn’t such a big step at all, just another small step.
Obviously some work needs to be done on unifying terminology, there are many places in MAME which refer to things as ‘games’ (or in MESS as ‘systems’) where in reality a unified term (something like ‘machines’) would apply better to both the arcade ‘machines’ and home ‘machiness’, but again that would simply be refinement, and another sign of the project becoming more serious, and more mature. Concerns with UME such as not being able to identify the type of system from the XML are more likely to be addressed now that everything is included in the primary target.
For an end user (not interested in developing) all it really means is that you get the option to do more with the binary you download; you have the opportunity to see how the code used for emulating Sega C2 / Megatech / Megaplay games fares when asked to run larger parts of the Megadrive / Genesis library, you have the tools at your fingertips to explore the different home ports of various arcade games and compare them. If the new additions don’t interest you then you can simply ignore them, just like you ignore so many of the terrible games supported by MAME right now.
From a developer point of view not much changes immediately; new developers get more in their build by default, and on a sufficiently high end system (as I’ve recently found out) build times and link times are still good. For developers on weaker hardware the old targets can still be built, and hopefully in the future things will become even easier with more focused targets for specific cases becoming much easier to generate than ever before. The project benefits because developers are more immediately aware that their changes must work with all sides of the project, as by including everything by default we’re showing we value it all equally.
There are always going to be people calling the project ‘Bloatware’ or throwing ‘Jack of all trades, master of none’ statements around about the project, but in the end the people calling it Bloatware are never really going to be satisfied as long as it emulates things they don’t personally care about, and the only way we’re going to master the emulation of many systems is by increasing exposure, getting people on board, and working hard on doing what we’ve always done; every little step counts. One thing I’ve noticed with MAME is that it stands the test of time a lot better than many of the smaller emulators even if there is room for improvement (the number of older but popular emulators that fail on simple things like coping with a wide-screen display without distorting the image is disturbing for example, I’ve found myself using MAME/UME very often simply due to little things like that, there are many advantages to it being an active and open project with a wide variety of users and tasks that need to be done meaning we’re never far from a release)
Moving on to more random thoughts, I guess UI builds will adopt the existing MESSUI code (as it provides a way to use a number of features that MAMEUI doesn’t) meaning those who have been asking me to do ‘UMEUI’ for a long time might finally get something along those lines, although I’d definitely still recommend a real frontend over either.
Overall it makes me happy to see that the public response has generally been positive, with some uncertainty over how things will work, but I’m sure once there has been a release or two with this as the default configuration people will find it a lot clearer.
A while back I covered Race Drivin’ Panorama, but mentioned that it wasn’t full functional due to the side screens crashing when selecting one of the car types.
It turns out that the cause of this crash was actually a regression affecting ALL the Hard Drivin’ / Race Drivin’ sets in one way or another that had been introduced during a modernization prior to my changes. Osso tracked down his error when addressing the original MameTesters report, and as a result Race Drivin’ Panorama now runs correctly, displaying full-screen views (no car panels) when selecting the Roadster rather than crashing; it turns out the code I wrote before was actually just fine and the game can now be marked as working.
Couriersud did some more work on Breakout, improving looks and performance (it now hovers around 100% on a 4Ghz i7 )
Brian Troha located some alt Golden Tee Fore! sets, including the original release and the 2002 release. Tracking down the sub-revisions of this could be tricky, especially if the online system was used to provide game updates (I’m not 100% sure on that) Also the game stores a lot of data to disk, including operator info and records etc. as well as allowing full version updates to be installed via CD, so finding clean drives is next to impossible too. These definitely border on the annoying to preserve territory as a result.
Even better news for fans of the GTFore! series is that Ted fixed the map display making them more or less fully playable.
Peter Ferrie gave some much needed attention to an unknown gambler that uses a i186 CPU. Turned out to be some kind of multi-game. One interesting thing with gambling games is they often have undocumented init codes which are required before the game will boot, sometimes even finding out how to access the page where you need to enter the code can be a challenge. Finding the code screen on this one wasn’t too tricky (last screen of the test mode, although it doesn’t explicitly ask you to enter a code) but working out the actual init sequence required took some digging through the game code; turns out it wanted keypresses of “1 1 X X 1 1 1 X X X 1 1 X 1 1 1 1 X 1 1 1 1 1 X 1 1 1 1 1 1 X” where X and 1 are 2 of the buttons the game uses.
This also required him to hook up a number of other components in the driver, although even with all this hooked up it doesn’t work quite correctly; never underestimate the amount of work that goes into making some of these run tho, they might look like dumb pieces of junk but they can be an interesting emulation challenge to those interested.
Another gambler, this time one running on a Hyperstone CPU was dumped by system11. The hardware is by F2 system and very similar to their ‘Mosaic’ game. It fails to boot with a ‘Secret’ Error, which I’m guessing is something similar to the above, or a protection check.