UME (Universal Machine Emulator) combines the features of MAME and MESS into a single multi-purpose emulator. The project represents a natural course of development for the emulators which already share large amounts of code and is part of an ongoing effort to unify development efforts and provide a single emulation platform for users and developers alike.
This is based on MESS SVN revision 15706 (GIT Mirror)
I’ve decided to stick with doing a single package containing source + both 32-bit and 64-bit binaries now, it’s a larger download but less confusing than requiring users to download separate resource packages etc.
The 0.146u4 release can be downloaded here.
General Release Commentary
The various fruit machine additions should not be listed in the ‘new working’ section of the whatsnew, this was a mistake when the whatsnew was compiled.
The 0.146u4 release brings the Poke Champ and Cyber Tank progress shown in my updates below to an official public release. The final Sky Destroyer progress missed the final cut by a few hours, so that’s missing. Cyber Tank, while still marked as not working is a lot more playable now than in any previous release, so if that interests you and you can look beyond the current glitches you might want to give it another spin.
A lot of the activity in recent weeks has come from Ville Linde, who finally got around to submitting his work on Taito Type Zero, and continued to make progress on said system, as well as Konami’s ‘Cobra’ system. Both are mid-generation 3D systems, and as of yet neither is really working, so don’t expect anything phenomenal in terms of functionality or performance out of them just yet but again it’s good to see progress being made on such systems where developer interest is generally rather low.
A significant amount of the MESS work has been on the VK100 ‘GIGI’ terminal emulation, which looks rather obscure, but interesting from a hardware point of view. For more game focused systems the Super Cassette Vision got a couple more fixes, as did the PC emulation for a couple of specific cases with CGA modes and sound in games like Arkanoid.
One thing I didn’t do an update here about is Wardner, which for quite a long time now has suffered from horrific slowdowns on later levels of the game for no obvious reason from an end users point of view. The MAME Memory system is flexible, but recent(ish) changes saw cases where memory handlers were being dynamically installed at runtime slowdown considerably, to the point where installing handlers anywhere outside of the initial system setup really isn’t recommended at all. Wardner has a fairly irreglar ROM banking scheme whereby when the first bank (0) is selected (which would otherwise act as a mirror of the lower part of ROM) you get the various sprite RAM and palette RAM mapped there instead. Due to this setup the MAME driver had been coded to install handlers for RAM when the RAM bank was switched in and install handlers for ROM when the ROM banks were switched in. Unfortunately because the game switches between the two with regular frequency (especially on the later levels where it needs data from the higher banks) the MAME core install handlers were being called far too often, resulting in 80-90% of CPU time on a 3Ghz system being spent just remapping memory! I’d been told by the most recent developers active on the memory system that it wasn’t going to get any faster, so to avoid this crippling slowdown I just reimplemented it using manual read/write handlers to do the mapping rather than going through the (slow) core functions. Probably not the greatest recommendation for MAME when what would seem to be such basic functionality is so slow, but I’m assured there is an awful lot of complex code under the hood to handle all sorts of edge cases.
I also worked with Kale a bit on the TC00091LVC emulation which is an all in one z80 + graphics chip which was used on the Fruit Dream and Last Bank video gamblers which have been promoted to working in the u4 release. The emulation was done as a modern device, and eventually the Taito L board games (Puzznic etc.) will be moved over to use it as well because they’re all based around the same chip; some driver modernization was done in preparation for that merge.
The other big thing in this release comes from Couriersud. Following on from the previous release we can see further work on Pong. The parent set of Pong now parses it’s list of components from an external file, allowing the machine definitions for these discrete games to be stored as roms would be. While for now this is a quite a bit slower than the hardcoded internal approach it’s also more flexible, and will hopefully evolve to a point where the files can also act as full schematics for the games, which is absolutely essential for such titles where everything about the games depends on the exact configuration of all the components.
Otherwise, lots of shuffling around of things, lots of cleanups, with some hints at what might be next in line to get a 2nd look or polish if you look over the SVN logs.