Emulating Fruit Machines is in many ways a process quite different to emulating a video based system. With video based systems you tend to get obvious large ranges of data writes relating to sprite lists, tilemaps, palettes and the like which usually allow you to make easy headway with the drivers, leaving the trickier more intricate IO details for later.
Fruit Machines are the opposite way around, they’re primarily IO, and if you don’t get that right, you don’t see anything. Almost everything is driven through ports, data often doesn’t get written at all unless status bits are correct, and you’re dealing with interrupts from multiple sources rather than having an obvious ‘trigger every frame’ vblank interrupt.
Thankfully there was a lot of part reuse, and for the majority of cases the boards are stacks of off-the-shelf components, for which documentation is available, and many of the needed components are already emulated in MAME, although not always to the required level.
One of my initial goals is to at least get everything doing *something* Allowing sets to run their ROM/RAM tests is good for sorting things out, and providing a base for further progress to be made. If they test other ROMs like their sound roms that’s even better because an awful lot of these fruit machine dumps are missing their sound roms, or have been paired up with the wrong ones, and it helps to know.
One of the systems I’ve been looking at a little bit lately is the Scorpion 4 one, it’s been emulated elsewhere for a while, and uses a 68000 based processor which makes it easier for me to work with due to familiarity. It’s not all plain sailing however, the 68000 it uses is actually a 68307 which means it has a number of onboard peripherals in order to simplify the actual PCB designs. These include a timer unit, serial unit, custom interrupt controller and hardware for ‘memory protection’ In addition there are other similar peripheral chips on the actual board, all of which need emulating properly.
It’s quite a cute looking board with the colourful dipswitches, and as you can see there are only a handful of actual components on there, with the 68307 doing the majority of the work. All the additional hardware driven by the board plugs into the various ports positioned around the edge (lamps, reels, hoppers etc. all marked near the connectors) with the game card and optional graphics expansion board going in the slots near the CPU. One thing to note, the sound chip (a YMZ280B) is on the game cards, odd design choice, but there you go.
I’ve spent the last couple of days stubbing up support for some of these and hooking up devices and peripherals that we already emulate to the driver, including the VFD ‘display’ which is on one of the ports. Quite a few things, including the timers and interrupt generation are hacked up for now, but it at least gives up a few pictures of the system booting and testing the game ROM + sound ROMs. I also had to fix up an issue with the YMZ280B data readback, which could have potentially crashed anything else in MAME using that chip and attempting to read the ROM data!
The majority of games have a 4 letter manufacturer assigned game code, and 8 digit ROM code associated with them which matches what’s printed on the ROM labels. This is important because there are many, many sets for each game to comply with different regulations, or use different additional hardware.
Obviously not much to look at, and if you want to play these things you’re still best off using the existing emulators for now, but it’s a sign of some progress being made. Most of the sets which boot this far complain about the reels, or meters, which I believe should be the same as the older Scorpion 2 platform, meaning much of the code is already there.
Roughly half the games in the driver don’t at all boot yet, they appear to be communicating with a different kind of VFD, or don’t use one at all (it isn’t actually visible on many of the cabinets anyway, but provides useful diagnostics information) Quite a lot complain about missing sound ROMs, or bad sound ROMs, although having them boot this far has allowed me to sort out a good number of the ones which were just being loaded incorrectly.
Some people still seem to be under the impression that these things can’t be emulated further than this, but if you’ve been following MAME you’ll have seen several recent additions of non-video games. Robbie‘s work on Janken Man for example shows a non-video game using the MAME layout / artwork system. ’30 Test’ is another recent addition along similar lines. The existing system might have it’s limitations but is clearly capable of providing the basic framework needed for any non-video based system as long as it isn’t depending on physical elements which none of the fruit machines really do.
The Scorpion 4 motherboard did actually have a video expansion available for it, known as the Adder 4. This adds an additional 68340 processor (similar to the 68307 but with more complex peripherals and a 32-bit core like the 68020) Only one Adder 4 game is fully dumped (Skill Dice) but that will be an interesting target in the more traditional MAME sense once the basics are all emulated.
I’ll probably continue to work on this for a while (ideally I’d like everything in the driver to display *something*), then possibly bring another driver or two up to a similar level. Progress is admittedly slow (it’s more or less only myself and James Wallace looking at any of this stuff) but I’d like to see various drivers getting to a stage where there are enough good visual indications if changes being made are correct or not because this will make it easier for others to get involved if it takes their fancy.