David Haywood's Homepage
MAME work and other stuff

MAME 0.172

March 31, 2016 Haze Categories: General News. 17 Comments on MAME 0.172

Somehow I didn’t actually get around to covering the MAME 0.171 release, these things happen from time to time.

0.172 was released this morning tho and it’s a significant release for a number of reasons.

First off the licensing. As a general MAME user you might not care too much about this, and actually might see more negatives from it than positives due to a handful of drivers being removed, but as far as MAME is concerned it is a big step because with the majority of the code now available under a 3-clause BSD style license we’re basically giving our work away for people to do whatever they want with. The bits that don’t have a BSD license are GPL, which is a bit more restrictive for people in certain industries, but still more of a free license than our previous one.

I guess I’ll state by stating the drivers that were removed and haven’t been rewritten.

Popper, released by Omori. This was an interesting Q-Bert style game, the hardware isn’t TOO complex, hopefully it will be back soon.

Marine Date, released by Taito. Probably the nastiest of the removed and not restored games, hardware collisions etc. Not sure it was ever 100% correctly emulated tho, and the board uses discrete sound that was never traced / emulated either. Interesting game, but maybe it can come back stronger at a later date.

Flower, released by Clarue / Komax / Sega / Alpha Denshi. This was a simple 80s style shooter, quite good fun, annoying sound hardware, slightly annoying video hardware with some zooming if I remember correctly.

In the non-arcade part of the code one of the Chess board simulation engines had to be dropped too, as well as a couple of the Chess drivers, if you like that kind of thing those will probably be missed.

Otherwise, that’s really it, out of everything there were only a handful of people we couldn’t contact. We managed to rewrite a couple of drivers during the cycle (otherwise there would have been 3-4 more entries in the above list) but yes, overall, and quite amazingly with around 20 years of history to the project we managed to contact the authors and get approval to relicense practically every piece of code in our codebase. Impressive.

I think it’s fair to say the majority look first at the list of “what runs now that didn’t before” so now that I’ve got the license talk out the way I’ll take a quick look at those for this release, starting with 2 I haven’t already covered here

Tournament Solitaire is a PC based Solitaire game, fairly self explanatory really. It doesn’t seem amazingly good, Windows has had a better built-in Solitaire game for many years which probably doomed this kind of thing as a stand-alone arcade game.

Tournament Solitaire Tournament Solitaire Tournament Solitaire

Magical Touch on the other hand is a bit more ambitious, it’s another piece of PC based hardware, but this time it’s a multi-game thing controlled with a touch screen. It too has a version of Solitaire, better than the one above, and a number of other bare-bones games. We’ve actually had a fair few requests over the years to get this one up and running so I guess it holds a place in the hearts of some people.

Magical Touch Magical Touch Magical Touch

I’ll quickly cover the ones I’ve already shown on these pages, first off Android. This is the early prototype version I covered in an earlier article, the later version was not dumped / added in time for 0.172, maybe next time. Interesting concept for a shooter, doesn’t really feel intuitive enough tho.

Android Android

Fire Ball is a bomberman clone, actually more historically significant than we realised because one of the developers was the guy who went on to become the head of ExPotato, a better known Korean developer still around today.

Fire Ball Fire Ball Fire Ball

The 3rd of the already covered games is Lock On, Philko’s attempt at doing a 16-bit shooter, ends up coming across as a bit of a Carrier Air Wing / US Navy wannabe tho.

Lock On Lock On Lock On

Merit’s Chicken Draw was also added, like most Merit games it seems to be a ‘for fun’ casino styled game. There are a lot of these, we don’t know exactly how many, so it’s nice to see them turn up from time to time.

Chicken Draw Chicken Draw Chicken Draw

While not technically a new game I did put some work into fixing up the Flash Point bootlegs, the last time these worked to a playable degree was a ridiculous amount of time ago, and even then they weren’t using the real sound roms etc. The Flash Point bootlegs are actually very interesting because they seem to be based on a different version of the game to the released version, possibly a prototype. There are also English and Japanese bootlegs, whereas for the original game it appears only a Japanese version exists. Things like the ‘Mirrorsoft’ disclaimer (used on Tetris games) appear in the bootlegs, but strangely not on the original, although the bootlegs lack a high score table.

Flash Point Flash Point Flash Point

In some cases having a layout can be an important step in making a game playable. While the Scorpion 4 hardware games do still have to operate in something of a freeplay mode the game ‘Frankie Dettori’s 7th Heaven’ was vastly improved with the addition of a basic internal layout positioning and naming all the lamps and reel symbols correctly. There’s still an odd issue with MAME layouts where using the £ symbol causes them to not show up (XML parse issue maybe) so $ signs are used for now. It’s a long road, but we’ll get there with these eventually. (the £ symbol issue has been fixed now, fix will be in the next release)

There are some new additions that are NOT WORKING but still interesting too. Big Buck Hunter 2 was added, you can watch the attract, but it doesn’t seem to be possible to calibrate the guns (and if it’s anything like the first game there might be protection issues after that)

Big Buck Hunter 2 Big Buck Hunter 2 Big Buck Hunter 2

Another NON WORKING addition is a Sega Master System / MSX based bootleg collection. This is unusual because most of the arcade mulitgames are NES / Famicom based, so seeing one with the likes of Alex Kidd and Final Bubble Bobble is rare. The dump is incomplete for the time being tho, there’s a MASK rom containing 11 of the games that hasn’t yet been dumped, hopefully that can be resolved soon and we can look into emulating it; the timer and credit system might be MCU based and require some HLE simulation tho. I think Buk Doo Gun included here is a previously unknown Korean title hack of ‘Hokuto no Ken’ which makes it kinda interesting even outside of this collection (you can extract it and run it as a standalone ROM)

Super Master System Super Game Super Master System Super Game

For the next couple you’ll need artwork from the MESS Artwork pages. Popular arcade games got many home adaptations, including numerous handheld games based on the (at the time) well known IP, often with different games based on the same original titles being released by different manufacturers. Bandai and Gakken were 2 manufacturers who got in on the act and for Bandai the featured games here are the adaptations of Data East’s Burger Time, Sega’s Zaxxon and Sega’s Pengo. For Gakken there is an adaptation of Konami’s Jungler.

Games like this are something of an acquired taste, the adaptations all manage to squeeze in certain elements of the games, but the biggest challenge of playing them is working out how the ‘rules’ of each game work, in terms of visuals you’re dealing with very infrequent updates, so an enemy that looks far away might only actually be 2 moves away from touching you etc. Either way, these are a lot of work to get going (dumping the MCUs, often visually, then having to find and correct any errors, making the artwork, testing them..) so it’s great to see them actually emulated.

Burger Time Zaxxon Jungler
Burger Time

There were others too, not based off arcade games. Castle Einstein is a ‘Simon’ clone, repeat the sequence you see. Very simple, so simple we can represent it entirely with the internal artwork.

Castle Einstein

While Conic’s Electronic Football I’m not really sure how to play, seems to be based on American Football, which I’m not really overly familiar with anyway. Again this one can be represented with the internal artwork

Conic's Electronic Football

There are a few other things in there that I don’t really know how to operate, so I’ll look over the clones and see what’s interesting. I did already cover Flash Point above, but there are some other noteworthy clones here. Topping that list I have to say is the Last Resort prototype. This is a NeoGeo game, and there are very noticeable difference in the stage design (enemy attack patterns) when compared to the final game. I made a video of it a few weeks ago when the dump was submitted to us. If you’re familiar with the game you’ll be able to see that despite my terrible play there are some obvious differences in the enemy placement, including 2 of the big metal enemies near the start rather than a wave of different ones after you beat the first.

Content not available.
Please allow cookies by clicking Accept on the banner

I don’t think any of the other clones really give anything to show in screenshots. The Buccaneers set provide a slightly different gameplay experience by not allowing you to backtrack at all, but there’s no visible difference. The collection of bootlegs that were dumped and added from Spanish boards often have Spanish text, but otherwise look the same as the original games. The Spartan X (Kung Fu Master) bootleg is probably the most significant in terms of hardware changes, but again the end result in a screenshot isn’t too different (the bootleg hardware can’t output as many lines tho, so the bottom 16 are cut off, likewise it has inferior sprite hardware so the sprites entering the screen from the left and right are slightly glitchy in the first frame)

The Software List additions section to the whatnsew is a fairly recent addition where we list interesting things that are now listed in the Software Lists, sometimes these tie in to actual driver developments as is the case with the Apple /// list changes, where some software exposed a number of bugs in the driver, those bugs were fixed, and so we decided to document the software that was used during the process. As the Apple /// was basically a failure any software that documents what it could do is interesting, the majority of software available runs in simple text modes, so an actual game, like Atomic Defense (a Missile Command clone) can tell us a lot more about the hardware and provides a better test case than a lot of other software; fixes made in 0.172 allow it to work

Atomic Defense Atomic Defense Atomic Defense

Preliminary Software Lists were also added for the Pocket Challenge V1 and V2, the Pocket Challenge V2 is actually basically a WonderSwan at heart, so while a dedicated driver with proper input mappings does not exist yet you can actually boot the software in the WS driver. The Pocket Challenge V1 appears to be unique / different hardware, so the only thing dumped for that doesn’t do anything yet. Both are Japanese educational systems, but without proper drivers are obviously still marked as NOT WORKING even if the V2 stuff can be booted.

Pocket Challenge V2 Pocket Challenge V2
Pocket Challenge V2 Pocket Challenge V2

Another one considered ‘NOT WORKING’ is GP Race in the Gamate list, although it is somewhat playable, however sprite flicker is presumably a lot worse than the real system. Games for obscure systems like the Gamate are not well known as they weren’t popular systems compared to the Gameboy etc. so seeing them dumped and documented is important.

Gamate GP Race Gamate GP Race Gamate GP Race Gamate GP Race

Back to WORKING titles, the Pyuuta list got 2 rare additions too, Super Bike is the first, I’ve made a video of that. You can see why it’s rare, it’s not a good game, the game mechanics make little sense, it feels forced so you can rarely rely on initial instinct to know what to press, a lot like the handheld games that I mentioned earlier even if it’s on a system with full video capability.

Content not available.
Please allow cookies by clicking Accept on the banner

The other Pyuuta game added is ‘Battle Fighter (3D)’ which is a more playable title. Essentially it’s a Xevious style shooter but with a perspective angle, there are air and ground targets, as well as air and ground attack buttons.

BattleFighter 3D BattleFighter 3D BattleFighter 3D

I talked about drivers being dropped due to relicensing earlier, and one driver that was initially dropped was the driver for the ‘SVI-328’ However, as a result of the driver being dropped it ended up being completely rewritten during the release cycle and is now back and better than ever, in fact it now runs a fancy demo doing various tricks with the hardware that the old driver fell over trying to run. Here’s a video (not my video)

Content not available.
Please allow cookies by clicking Accept on the banner

One big piece of news for 0.172 is that the HLSL shader system has been ported to the ‘BGFX’ video mode, meaning it’s now cross platform rather than Windows specific. The way the shaders in BGFX work is also enhanced over the hardcoded HLSL of the D3D video mode, you actually specify the shader chain on the command-line and can set it up to use different shaders on different screens etc. With regular HLSL you were forced to have the same shader for all screens which looked a bit silly in cases like the Mahjong games where 2 of the ‘screens’ are LCD panels which shouldn’t have had effects applied. This looks much better now.

House Mannequin (with BGFX) House Mannequin (with BGFX)

As the shader system is now more open ended it should be possible to drop new custom shaders in more easily, so you might see ports of many of the effect files found in other MAME versions and be able to use them in the baseline MAME. The only word of warning I’ll give is that things aren’t 100% stable right now, doing things like ALT-ENTER to switch between fullscreen and a window tends to have undesirable effects and will often crash if you have the shader enabled.

HLSL itself has also been tweaked and enhanced over the course of the cycle, it’s gained ‘preset’ support, and a number of presets are shipped, including one for the ‘gameboy’ which gives a more authentic look.

Super Mario Land (GameBoy) HLSL
Super Mario Land (GameBoy) HLSL

Another ‘plugin’ system was introduced to expand MAME’s LUA scripting capabilities too, and for the first time in years the baseline version of MAME can again use hiscore.dat via these plugins. This is actually an incredibly powerful system with a lot of interesting possibilities, for example you could potentially write something like a Pacman AI in LUA and have it play the game for you, or display real-time translations of Japanese games if you write scripts to look for certain characters being displayed and then display an overlay in English using the MAME interface. Of course nobody has written those scripts yet, only the high score one, but it’s definitely an area of MAME that people could put to good use.

Hiscore Plugin

One last significant end-user visible change in 0.172 comes in the form of the multi-language interface. A lot of work was put into language files over the past month, converting our interface code to use them. What this means is that all UI strings (MAME menus etc.) can be shown in a wide variety of non-English languages. While this might not seem much it is actually important these days as the increasing complexity of MAME means that some advanced things are much easier for non-English speakers with the interface translated.

MAME Interface in Italian

There’s also been a massive effort made to improve the MAME documentation on the official site ( http://docs.mamedev.org/ )

Less user visible are all the ‘under the hood’ changes in this release, a lot of the MAME file handling code was refactored for example, this is good because it brings features like the 7-zip support entirely on-par with the regular zip support, meaning all tools (romcmp etc.) now work with the 7-zipped images, as does the file manager for selecting loose files.

Finally, and maybe of interest to less users is the news that a number of GroovyMAME features were integrated, allowing for integer only scaling etc. which should help with people wanting to use the baseline version on CRTs etc. (There was a lot of concern over the DirectDraw output mode being dropped as that was the only mode with integer scaling in the past, but as the entire DirectDraw interface is deprecated by Microsoft it couldn’t stay around forever)

Definitely a big release, and a lot of work for 1 month. I might tack on a few 0.171 highlights to the end of this to make up for the lack of coverage last time, we’ll see.

Go to article.. »

Android Android

March 14, 2016 Haze Categories: General News. 7 Comments on Android Android

The game development cycle can be a fascinating thing, especially for games that ultimately might not have been released.

We knew of a game called ‘Android’ by Nasco, because Chris Hardy has one, he uploaded a video here and apparently he was wanting to write a driver for his PCB before submitting it but had got stuck on something to do with the sprite attributes shortly after uploading that video.

When another copy of Android turned up we initially almost passed on buying it because of this, however a closer look at the version on offer showed it was rather different to the one that was in Chris’s hands so we ended up buying it (or rather Ryan Holtz / MooglyGuy ended up buying it – it cost a rather hefty $500, so as always donations are appreciated, we don’t have bottomless pockets and that was a fair chunk of money. Without funds things WILL get lost because sadly some people would rather put profit before preservation)

Anyway, as I had to check out the dump to make sure it was good, and don’t know what hardware the one Chris has runs on I looked at emulating it.

Searching the PCB board number turned up an obscure driver ‘himesiki.cpp’ in which ‘Himeshikibu’ a 1989 Japanese Hanafuda type game by ‘Hi-Soft’ was the only game present. Looking in the driver that was a 3 board stack, so I ruled out the chances of it actually being the same board as coincidence as this was only a 2 board stack.

I then spent a bit of time looking at the romset, and realised that ruling out that driver was a mistake, because everything was mapping to be exactly the same as the driver I’d found except for a there being one less set of sprites; presumably this is what the 3rd board provides and Android simply didn’t have it or need it.

I needed to fix up a few things such as the CPU banking, and tilemap scrolling, but essentially it was an easy drop-in. The build we picked up feels very much like a prototype, rough around the edges, unfinished in places.

For fun I did some side-by-side comparisons with the version Chris owns. What you can’t see in these screenshots, but can see in the videos is that his has more complete music too.

Android (MAME) Android (Chris)
Android (MAME) Android (Chris)
Android (MAME) Android (Chris)
Android (MAME) Android (Chris)
Android (MAME) Android (Chris)

As you can see, the differences are very significant.

The font between the two versions is entirely changed, the one Chris has uses a thin font, the one we picked up has a chunky one.

The title screen is modified, the sprite graphic is changed, but most significantly the galaxy used in the background has been replaced with a smaller, cleaner more elegant looking one in the version Chris has.

The high score table is fully populated in the version Chris has, but not ours.

The stage introduction text is more detailed on the one Chris has

The ingame background is coloured on the one Chris has, it’s a starfield on the one we have.

The ingame sprites are completely different too, the player ship is changed as have all the enemies, the enemies on our board are various robots, the one Chris has uses eggs that turn into heads. The one Chris owns also has a shield powerup, and you can move all the way up the screen into the enemies, ours has no powerups and restricts you to half the screen.

Now.. all this clearly suggests that the board Chris has is a newer version, HOWEVER, the one we have also does some things that his one doesn’t. We for example have a level timer, when that timer expires any enemies you haven’t killed turn into a circular boss, you must shoot the left edge of that boss to stop the spinning so that you can attack it’s weak point. Upon starting a game our version also has a big dragon (it quickly retreats and reappears for you to kill after several stages) This dragon does not appear at all after coining up on the version Chris has (if it appears later is unknown)

I’d still say the one Chris has is newer, it’s a lot more polished, has a proper coin-up sound etc. but this definitely gives some insight into the development of the game, a game we’re not actually sure if was released at all.

For reference, here are some screenshots of the things in the MAME version that I can’t see in the one Chris owns.

Android (MAME) Android (MAME)
Android (MAME) Android (MAME)

It remains to be seen if the one Chris owns drops straight in the Himeshikibu like this one did, although if it does then I’ll cross my fingers and hope he submits it soon, as his reason for not submitting it before was that his driver was incomplete, but if it’s actually this PCB we already emulate then that problem is already resolved. It will definitely be interesting to do a more intensive comparison of the two versions if the other one does get submitted.

In the meantime, here is a video of me playing the one we have badly. It’s actually an interesting game, you have 2 gun types, one transforms the enemies between different forms, the other zaps them. If you zap an enemy in anything except their 3rd form they’ll respawn. Any enemies left when the timer runs out will form into the bigger ‘circular’ boss enemy, the more enemies left the more difficult that boss enemy. There’s also a bonus stage following similar rules, and the ‘dragon’ stage which seems less complex.

Content not available.
Please allow cookies by clicking Accept on the banner

Go to article.. »

Catching Fire

March 13, 2016 Haze Categories: General News. 7 Comments on Catching Fire

Until it showed up a week or so ago I had never heard of the game ‘Fire Ball’ by FM Work, but the screenshots on eBay made it look like a Bomberman ‘clone’.

Team Europe picked up the board and dumped it. The hardware was a z80 based board (with an additional Z80 for sound) so definitely not based on bootleg Bomberman code, but instead an original Korean product.

Even with original Korean games the hardware is usually cloned from something else, and identifying what it is early can save a lot of time. (I actually ended up discovering the Black Touch ’96 is a modified clone of SNK’s POW hardware – many years after I added it, had I found that earlier it would have saved me a lot of time figuring out the video hardware!)

The cloned hardware is rarely a straight 1:1 copies, usually the sound systems are degraded, clocks often changed, sometimes graphics hardware is tweaked (for higher BPP tiles, as we saw with Lock On previously covered here) and physically they look nothing alike so when trying to work out the basis of a piece of hardware you have to look for ‘unique’ characteristics in terms of addresses used, sprite / video formats etc. in order to pair the cloned hardware.

Anyway, with Fire Ball I decided to start by decoding the graphic tiles, that turned out to be simple enough, 3 sets of graphics, 2 sets of 4bpp 16×16 tiles, and a set of 2bpp 8×8 tiles.

I then started looking at the code for the main CPU. It’s was a Z80 program, clearly driven by an NMI (Non-maskable interrupt) rather than the regular IRQ0 signal on the PCB. Generating an NMI too early caused the game code to crash, so clearly there was an external enable / disable flag for the NMI generation. The only real things the game did of note aside from clearing RAM were some port writes, especially to address 0xf80e. One of those was surely NMI enable. The last thing it wrote there, before sitting in a ‘halt’ loop was 0x08.

Searching the MAME source for “0xf80e” in the memory maps gave precisely one hit. The driver for Legendary Wings (lwings.cpp)

Mapped at 0xf80e there was “AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)” which on the surface might not sound like what I was looking for, but if you look in the actual function you’ll see it does a few things, including having an NMI enable flag on bit 0x08.

Legendary Wings also used a 2bpp text layer, 16×16 4bpp sprites, and 16×16 4bpp tiles.

It quickly became apparently that it was the base FM Work had used to create their cloned hardware from.

Anyway, I added it to the driver, taking note that the sound system was definitely different, this PCB used a single M6295 for sound, none of the Yamaha chips of the original hardware.

None of the games in the driver supported 4 players, so I also had to figure out where the extra inputs mapped, not really a challenge, and then tackle the sound. Worrying there was a big epoxy block on the PCB, however we’d already established that removing it only caused one thing to happen, the sound stopped working. Team Europe had also already decided to throw caution to the wind and open it up, there was actually very little of note inside, just 2 20pin devices.

Hooking up the sound didn’t take long, it isn’t great, but that’s because the sound hardware is awful; test mode lets you test every sample. Having hooked it up I’m actually left a little confused as to what the purpose of those devices inside the block are, maybe they’re related to the sound banking or memory map for the sound, because the actual sound system is very simple, a simple M6295 driven by a tiny program, with some sample banking.

I played through the game a bit, noticed that the 3rd boss and above had corrupt graphics, noted that the game has twice as many sprites as anything on the original hardware, and found the sprite bankswitch address (same location as the rom bankswitch)

Interestingly, because this game has a single 0x20000 program rom, rather than 3 0x8000 sized roms like the other games in the driver a chunk of the program rom is inaccessible. Alone this isn’t too unusual for these Korean games, often such areas are left blank in roms or just duplicate the first part of the data.

What’s weird here is that the inaccessible area is mostly a direct copy of the first ‘fixed’ / ‘non-banked’ part of the program code but with a very slight change, 2 pieces of code are switched around.

3822: CD 73
3823: 00 23
3824: 3E 72
3879: 73 CD
387A: 23 00
387B: 72 3E

first copy in ROM
3822: 73 ld (hl),e
3823: 23 inc hl
3824: 72 ld (hl),d
3879: CD 00 3E call $3E00

2nd copy in rom
3822: CD 00 3E call $3E00
3879: 73 ld (hl),e
387A: 23 inc hl
387B: 72 ld (hl),d

I’m not sure why this is, I don’t think the 2nd copy can be banked in, maybe it’s an older copy of the game code before they fixed a bug, I haven’t worked out when the code is called either.

Anyway, the game is fully playable, although clocks and refresh rate aren’t verified. Here are some screenshots (and yes, the 16-pixel border on the left is correct, only test mode uses the full width)

Fire Ball Fire Ball
Fire Ball Fire Ball
Fire Ball Fire Ball
Fire Ball Fire Ball
Fire Ball Fire Ball
Fire Ball Fire Ball

I’ve also uploaded a video of it to YouTube, not being played well, but enough to show you the game.

Content not available.
Please allow cookies by clicking Accept on the banner

Go to article.. »

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.