David Haywood's Homepage
MAME work and other stuff

C-C-C-C-Combo … Ultimate MAME 0.144u1 (MameComplete?)

November 29, 2011 Haze Categories: General News. 42 Comments on C-C-C-C-Combo … Ultimate MAME 0.144u1 (MameComplete?)

Ultimate MAME 0.144u1

The main official complaint with regards my previous ‘UltimateMAME’ proof of concept seemed to be the merging of everything into the single MAME tree. While I personally consider this an advantage (less places to look = less confusion) sometimes compromises have to be made in order to get things accepted officially.

Therefore, I present, based on the current codebase, a new proof of concept.

This, instead of combining the folders , adds a new build target to the system ‘complete’

The basic changes are still very simple, the mame.mak / mess.mak files have been reorganized a little to support what I’m doing, a simple tool has been created to merge .lst files to a final .lst file (right now it just joins the files, but additional validity checks could be added)

To support this the shared systems between MAME and MESS (where retail console units were used as the base for arcade machines) have been put in their own shared.lst to avoid conflicts, and an additional set of rules have been added to the makefiles to build the correct .lst for each target.

This, if accepted (and there really is no good reason it shouldn’t be, the base changes are legitimate and useful progress regardless) will reduce the actual number of files needed to create a combined build down to 2. The ‘complete.mak’ and ‘complete.c’ in the ‘complete’ folder. Therefore, even if a decision to not include those 2 specific files is taken it will be a LOT easier to maintain externally anyway.

From the point of view of Mamedev this allows the projects to maintain their individual identity, and keep the folder separation.

From the point of view, or somebody working on cross-project drivers it gives the option to build a single combined binary as a target. As an added bonus, if you have a single ‘Complete.exe’ binary built, and want the individual MAME.exe or MESS.exe out of it then everything you need is already built, so changing the target in the makefile will give you the split build in a matter of seconds, no need for a new rebuild!

For people who don’t care about having a combined binary this is a 0 impact change, absolutely nothing about the project work flow changes, and the combined target can happily be ignored. By default MAME.exe / MESS.exe will be built, you have to specify that you want a combined binary.

This is in essence win-win for everybody.

—-

Binaries / Source stuff
The following MAME/MESS sync positions were used:

http://git.redump.net/mame/commit/?id=72c99a93fb4102fe870562eeaf31ae49cfb4dc6d
http://git.redump.net/mess/commit/?id=9983e6ed75e51c8974318b3706853b6c5da63a5e

Both being slightly newer than 0.144u1 on the ‘Better error handling for softlists’ change.

After combining those sources, the following diff was applied to update the build system as I describe above.
That still leaves the default build target in the makefile as ‘mame’ change it to ‘combined’ to get the combined build.

Combined Source here
64-bit Binary here
32-bit Binary here

I’ve still had some issues building the tools, but it should be possible to resolve those quite easily, it just wasn’t necessary for this 2nd proof of concept, which was targeted at resolving the issues MameDev had with the first patch.

Fingers crossed that the basics of this will actually be accepted, I can’t think of any legitimate reasons why it wouldn’t be, but you never know with Mamedev these days… Anyhow, it’s all been submitted yet for some reason I still have a bad feeling I’ll come up with answers to all the problems, then just get radio silence instead of a real reason for things not being included tho…

Given that I’ve called the build target ‘Complete’ (which is a better description of it) and the exe is therefore complete.exe maybe I should call any future builds produced like this ‘MameComplete’ as they represent a more complete Mame build than the baseline. The current name was just really based on the most complete version of Windows being the ‘Ultimate’ editions ;-)

—————

Mini Game Review – Willy Wino’s Stag Night (Amstrad CPC)

I’ve recently been having a bit of a play with the Amstrad CPC driver, scoping out how well it runs things (definitely room for improvement) and it’s on that system I’d like to highlight a game I think is a good example of classic platforming action.

Released in 1988 by Probe Software, Willy Wino’s Stag Night utilizes the lower resolution, higher colour mode of the CPC to good effect. Unlike many games on the system which overload the screen with action, and attempt all sorts of fancy scrolling at the cost of fluidity Willy Wino’s presents clear graphics, and a solid framerate, boasting some very nice animation of the main character.

The game is a flip-screen ‘collect all the objects’ style game, think Manic Miner, but with multi-screen levels and bigger objects and you’re pretty much there. It’s not the longest game in the world at only 8 levels, but with only 3 lives it remains challenging without ever seeming unfair.

In keeping with the theme of the overall game you’re picking up bottles of Willy’s preferred alcoholic beverage (which would appear to have no ill effect on your protagonist) Enemies are your typical spikes, traps, fire, and a random assortment of other objects, you’ve got the conveyor belts you expect in this type of game and everything is pretty much as you’d expect. There’s no music, just a little tune each time you pick up an object and the sound of your footsteps, jumping and deaths. All fitting and polished like the rest of the game comes across as.

Overall presentation is good, you have all the option to choose your keys, some brief instructions, and if you leave the game running on the menu you’ll get to see a collection of screens from the game which just makes you want to play more to actually reach them.

The main difficult comes from the movement speed, your character is quite slow, no faster than any of the enemies, which means you have to carefully plan what you’re going to do, when you’re going to make a run for it. You turn slower than the enemies, so indecision can be fatal, also like most games in this genre it’s important to get the jumps right, jump into a spike and you’re history. Again, this never feels unfair, and once you get the hang of the timing you’ll be able to anticipate most dangerous situations well. To keep you on your toes there is a timer in the form of the ‘Air’ bar top left, so you can’t just hang around forever!

All in all it’s classic platform action and a very good example of working to the strengths of the system, there are definitely flashier games but as far as standing up to the test of time goes this one is a gem, and not one to overlook!


Willy Winos Stag Night Willy Winos Stag Night Willy Winos Stag Night

Willy Winos Stag Night Willy Winos Stag Night Willy Winos Stag Night

Willy Winos Stag Night Willy Winos Stag Night Willy Winos Stag Night

Willy Winos Stag Night Willy Winos Stag Night Willy Winos Stag Night

For the purpose of testing the current ‘Ultimate MAME’ build posted here was tested, system ‘cpc464’ and entry ‘-cass willywin’ which is the cassette version from the Software List.

To use, type |tape and hit return (the | character is mapped to the { key here) and then type run” hit return, then press any key.

To start the tape in you have to turn the full keyboard emulation off with SCROLL LOCK, press TAB to bring up the internal menu, Scroll down to Tape Control, select that, scroll down to Play, select that, close the menu with Tab, then hit SCROLL LOCK again to turn the full keyboard emulation back on.. Then wait a while for it to load, enjoying the ‘Bleep Loader’ which owners of both the Amstrad and Speccy will be very familiar with ;-) In terms of emulation quality, I didn’t notice any problems at all with the emulation of this title.

————

Mini Game Review – Ghouls (Amstrad CPC)

When somebody says ‘Pacman with Legs’ most people instantly think of Crazy Otto, the prototype which was to later become Ms. Pacman. I think of this. The concept is so simple, so perfect, Pacman, as a platform game.

Ghouls is a game I want to love as a game, but it’s also a game I’d dearly actually love to be able to complete the first level on. Actually merely overcoming the first obstacle is a challenge. This game has issues.

When it comes to collision detection helping you, for example, needing to land on a platform, it seems you need to be spot on, or you miss. When it comes to something killing you, the slightest touch will do it. Controls are also terribly laggy too, you need pixel perfect jumps, but there is a noticeable delay between pressing the jump button, and actually jumping. Worse still, if you actually hold down the jump button for more than a fraction of a second, even if you release it prior to jumping, you’ll jump once again upon landing, usually to your death. Usually this is because falls kill you, jump off a ledge, and you die. Was that really necessary?

This could have been a really good game, but the execution lets it down so badly it really borders on unplayable, it’s a real shame, because you can see what the game designers and programmers wanted to achieve, and they’ve got the visual style of a side-on Pacman game down to a science here. Simply to get screenshots of other levels I had to leave it in running the demo mode, a demo mode where the character makes no attempt to actually play the level, possibly a wise move, death after all is inevitable ;-)

The levels have moving platforms (which kill you) Ghosts which home in on you (and kill you) Gaping canyons (which kill you) Spikes (which kill you) Extending bridges (which usually just end up killing you) and to top it off you don’t even get that many lives, there’s no password system, no checkpoints in the levels, and sometimes the ghosts actually spawn in positions which make the levels seemingly impossible even if you were to get the jumps spot on.

Somebody could go back to the drawing board and produce a really good game out of this, I’m sure, but issues with the controls, issues with the collision, the sheer number of things which will kill you and the lack of any feeling that you’re making worthwhile progress means this game falls at the first hurdle, much like you do 9 times out of 10 when you play it. Worth looking at just to imagine what it could have been, but ultimately terrible.


Ghouls Ghouls

Ghouls Ghouls

Ghouls Ghouls

Ghouls Ghouls

For the purpose of testing the current ‘Ultimate MAME’ build posted here was tested, system ‘cpc464’ and entry ‘-flop1 ghoulsuk’ which is the floppy disk version from the Software List.

To use, type run”ghouls and hit return.. the game will load from the emulated disk drive.

No emulation problems were observed, the game really is just as unplayable on a real system!

Go to article.. »

Immediate Plans

November 25, 2011 Haze Categories: General News. 17 Comments on Immediate Plans

After leaving the Fruit Machine emulation for a bit while 0.144 was put out the door I think it’s about due time I got back to looking at that. I’m effectively down a man on that front tho, because James who was providing some assistance is currently out of action due to real life goings on.

Also, as outlined below NeoGeo Multislot is in my plans, this shouldn’t actually be too difficult to implement now, just requires a bit of planning.

There are a couple of MESS-side issues I’ve noticed while going through systems with UltimateMAME which could do with some attention (not specific to my build, just general problems in MESS) For now I’m just waiting to see what the actual MAME/MESSdevs come up with as a solution as far as building a unified binary goes tho. If they are serious about doing a merge then any sensible solution would at least have the option to build an ‘UltimateMAME’ like target, so I’m going to bide my time on that for a while. I’ve shown that it can be done so the ball is very much in their court now as far as delivering anything as complete and functional as what I provided, but in an official capacity is concerned.

I _won’t_ be working on Raiden 2, Gaelco, HNG64, Later release PGM or anything along those lines, sorry.

I might do some more mini-reviews / game(s) of the week type things, pointing out some obscure, or forgotten games which are noteworthy for some reason or another. There are many interesting titles out there beyond MAME, and due to various factors (difficulty in using the systems without prior knowledge, vast size of software libraries, assumptions that old computers/consoles just weren’t as capable, lack of a popular MAME-like project for non-arcades, the number of closed source ‘best’ emulators which simply fail on modern platforms etc.) a fair number are being completely overlooked, or at most relegated to ‘best 100 games for xxx’ YouTube videos with little explanation as to why.

I’ll probably use my UltimateMAME builds, or MESS for the purpose of this, as while compatibility, and usability may be inferior to some of the standalone emulators people can actually depend on it to work as described regardless of their platform. It’s just a shame compatibility on some of the systems is so bad (PSX, Saturn, Jaguar etc.) of course being open software there is always the opportunity to improve it, although that requires people to actually know it exists, and one of the most evident things about UltimateMAME is that a lot of people apparently didn’t even realise what MESS was, so I can only guess it’s just as hidden from developers.

With the above in mind, one final thing I will say is that it MESS exists, and if you’re considering doing your own 100% accurate emulator for a platform please consider coding in MESS instead, and improving the MAME framework while you’re at it because one thing about the project(s) is they’re always going to be there and somebody is always going to be maintaining them, so if you care about things being preserved for the generations it’s a good place to do your work. It might seem like a silly ‘nothing’ project split off from MAME, and relegated to obscurity, but it really is just as important, if not more and we’re quickly approaching a period where most of the developers who are likely to be interested in these things are getting older, and moving on to other real life ventures which IMHO puts some systems at risk of never being emulated and preserved properly in an open, active project.

Go to article.. »

Ultimate MAME 0.144a

November 18, 2011 Haze Categories: General News. 26 Comments on Ultimate MAME 0.144a

I wasn’t expecting quite such a positive response from the initial ‘Ultimate MAME’ post, but it seems like a decent number of people really like the single binary concept.

Anyway, there were a couple of issues with the MESS 0.144 source on which it was based, these have since been resolved, as well as several other changes made which may be of benefit to this build. In the 0.144 release things like c64 would just crash due to aforementioned MESS bugs, and the code for some MESS drivers would end up being compiled differently to a standard MESS binary due to it being hidden behind #ifdef MESS defines in the source. Micko has done some work on removing those cases, although he did manage to introduce some additional conflicts in the process which I’ve fixed and submitted a patch for.

Anyhow, what this means is that I’ve done a quick update of the build against 2 newer GIT revisions (MAME and MESS which should fix this handful of issues.

Combined Source (0.144a)
32-bit Binary (0.144a)
64-bit Binary (0.144a)

Also I’ve decided to add some screenshots of various things running in this build :-)


Miner 2049er Island of Dr. Destructo
Left: Miner 2049er (from the C64 software list)
A classic C64 platformer shows that the C64 driver works in this release, simple and popular arcade style gameplay on a home system,

Right: The Island of Dr Destructo (Amstrad CPC, from a TOSEC disk image)
Inspired by the classic arcade Two Tigers but arguably more fun, albeit a bit slow paced like most things on the platform. Always lots going on as you attempt to sink everything from Battleships to an actual island. One of my favourites

Pi R Squared Time Gal

Left: Pi-R-Squared (Spectrum, from TZX tape image)
A unique puzzle style action game on the ZX Spectrum which would have IMHO made a good arcade title. Two directions and a ‘switch’ button allow you to traverse between rotating gears. You must complete 360 degrees of each circle to collect the item inside it, and to finish a level you must collect the parts of a formula in order, while avoiding the enemies. Sound is sparse, but the gameplay is addictive.

Right: Time Gal (Sega CD, from Software List)
The laserdisc arcade version of this isn’t emulated in MAME yet, but the SegaCD version is fully playable. Not a big fan of these FMV games, but some people like them.

Pole Position Sonic The Hedgehog Megatech

Left: Pole Position on the Vectrex, Port of the classic Namco title running on this unique vector based home system, if you thought Vector monitors only existed in fancy arcade games like Battle Zone, think again!

Right: The Arcade Megatech system running Sonic The Hedgehog. The actual rom is identical to the Megadrive / Genesis version, but crippled by a ‘pay for time’ timer. You could install multiple games tho!

Pole Position Sonic The Hedgehog

Left: The original Pole Position Arcade from Namco

Right: The Megadrive / Genesis version of Sonic running in the very same Genesis driver as the Megatech version above, but without the crippling timer system!

The Apprentice Speedy Dragon

Left: The Apprentice on CDI. The CDI might not have had many good titles, and you could probably even make a case against ‘The Apprentice’ rather easily, but it sure is pretty, and much like ‘Hotel Mario’ on the same platform it presents what could have made a pretty decent arcade game rather than the god-awful (yet still better than most of the home output) quiz games which were released on the platform in the Arcades.

Right: Speedy Dragon, from the obscure Super ACan system. Emulation is still preliminary, but it’s an interesting Sonic inspired adventure.

Wec Le Mans Burnin' Rubber

Left: Konami’s Classic Wec-Le-Mans, one of the most solid arcade racing games of it’s time.

Right: Burnin’ Rubber for the ill-fated GX4000 (an 8-bit home console based on the Amstrad 6128, released far too late) Burnin’ Rubber is clearly inspired by Wec-Le-Mans, with the majority of gameplay elements mirroring it closely, sadly it’s so sluggish it’s nearly unplayable, the original Amstrad 464 port of Wec Le Mans was a lot more playable! Still, an interesting experience.

Summer Carnival '92 Recca Aleste

Left: Summer Carnival ’92 Recca for the NES – an early game from Shinobu Yagawa, who is better known for his work at Raizing and Cave. The SH3 based ‘Pink Sweets’ takes it’s bomb mechanic right from this rare classic which is every bit as manic as his later games.

Right: Aleste for the MSX. Nowhere near as manic, but interesting to see actual MSX games running in MESS as the offerings based on the hardware in MAME are all a bit weak.

Parasol Stars Dracula X

Left: Parasol Stars for the PC Engine – Many claim this did exist in the arcades, Taito say it didn’t. There were ‘licensed’ but very crude timer-based PCE systems which could potentially run it, but you may as well just run the real thing without an ugly timer tacked on to reset it when you stop inserting coins.

Right: Dracula X for the PC Engine CD – Just to show that CD support works too

Disney's Aladdin Disney's Aladdin

Left: Disney’s Aladdin, the original classic Megadrive / Genesis Game

Right: Disney’s Aladdin, the original classic Megadrive / Genesis Game but with some ugly hacks applied by Chinese bootleggers so that it works as an arcade game. This one is supported in baseline MAME as a result while the original isn’t due to it being a home only game. A great injustice I say.

Metal Slug Metal Slug 2nd Mission

Left: The NeoGeo MVS classic Metal Slug

Right: Metal Slug 2nd Mission for the short-lived NeoGeoPocket Color, a solid adaptation of the game which due to the premature death of the system never really got the credit it deserved.

Bari Arm Bomb Fusion

Left: Bari Arm (Android Assault) for SegaCD… One of those crazy ‘This should have been an Arcade game’ shooters.. developed by Human who did make a couple of arcade games, missed opportunity for sure!

Right: Bomb Fusion for the ZX Spectrum… This one could easily have been a classic arcade, make contact with the various balls which are falling around the screen to have them follow you, and take them to the crate. You need a certain number to exit the level, but all the time there are bombs ticking away which you need to defuse to avoid the radiation level increasing, all while avoiding the other enemies.

Pac Attack Cosmo Gang The Puzzle

Left: Pac Attack on the SNES, Home Only Release

Right: Cosmo Gang The Puzzle… Somehow the Pacman theme of Pac Attack suits the game mechanics far better, a real shame this was the only true arcade version.

Penguin Land Doki Doki Penguin Land Arcade

Left: Penguin Land for the SMS

Right: Doki Doki Penguin Land Arcade, notice how the Arcade version look a lot worse than the SMS version, it’s actually based on older hardware, so much for that theory that the home versions were always just inferior versions with worse visuals ;-)

Puyo Puyo Kirby's Avalanche

Left: The original Puyo Puyo arcade game, running on SegaC2 hardware (derived from the Genesis VDP)

Right: Kirby’s Avalanche, a SNES exclusive adaptation of the game featuring Nintendo’s well known Kirby character. The Genesis also had a similar adaptation using Dr. Robotnik as the lead character. It’s a shame these adaptations never made it back into the arcades really because they’re appealing in their own ways.

While creating these screenshots I have noticed that things like the inputs in the X68000 don’t seem to be working properly (which is a shame because there would be some nice comparison shots otherwise) I need to check if that’s just a regression in MESS, or if I’m using the driver incorrectly, or it’s something MESS specific which isn’t getting compiled quite right in this build. Likewise I was a little surprised to see the BBC Micro not booting because I wanted to put up a Chuckie Egg shot. I’ll investigate those later.

As you can see tho, the code does a reputable job for a good number of the major systems, and while some of the later ones still need significant amounts of work the MESS component of Ultimate MAME does give a good variety of extra functionality to the base MAME emulator, allowing for easier testing of shared components via. a far expanded library of games using them. There is huge potential in such a combined project!

A lot of people who only care about ‘the games’ write off console versions, and old computers as being trash and simply not worth playing, but each and every library contains a good number of gems which can hold their own against any arcade game in terms of gameplay and graphics, and even when they fail to do that they often have their own unique charm and are in some cases of great importance, as I hope some of the shots above demonstrate. Open your mind :-) For the majority of the things pictured above all the code is actually already in baseline MAME, just not being used to it’s full potential there due to the arcade only policy, to me that’s a real shame and one of the reasons I created this build, what’s the point of writing code, and painstakingly testing if it’s then only ever going to be used to 5% of it’s potential in the primary project?

Go to article.. »

Ultimate MAME 0.144

November 15, 2011 Haze Categories: General News. 37 Comments on Ultimate MAME 0.144

MESS is MAME, I’ve made this point before.

The functionality found in MESS, the ability to run console / computer based software can easily be added to MAME.

There has been talk of doing this officially for a while now, but every attempt is met by too many opinions, too many people trying to overcomplicate the process, and too much focus on offering LESS functionality to the end user and requiring MORE code to get there.

As a result nothing ever actually happens.

There are some devs saying they’ll quit the scene if it ever happens, contribute nothing more, there are people who really don’t seem to want to allow this functionality in MAME, even if there is no cost at all to having it, and a huge number of benefits in terms of testing, unified development and a cleaner source tree.

The most elegant solution to this problem is also the simplest one, and that is to wipe from your mind any concept that a system having a coin slot is a valid criteria for division, and simply treat the source trees as if that were the case.

The current MAME source structure has 2 main emulation sub-folders
emu – all common off-the-shelf, non system specific components go here
mame – all custom chips and system emulations go here

Inside each of these is currently a tree structure of drivers, video implementations, machine implementations, audio system implementations etc.

By default the mess project adds a further folder, ‘mess’ for non-arcade systems. On the surface that might seem like sound logic, but in reality it just creates uncertainty over where to look for files. By logic you’d probably expect to see video/n64.c in the /mess folder. N64 was a home console, but in reality it exists in the /mame folder, because it’s a custom component emulation which is also used by arcade games.

Proposals have been put forward to maybe create a 4th folder when merging the projects ‘shared’ but all that would achieve is bumping having 2 places to look for files right up to 4, and you’d still need prior knowledge that a system was shared between arcade / home use to even think about looking there.

Essentially the existing structure MAME already has is still the best, 2 places, making it obvious where to look. The most logical way to merge things would be to just move the MESS files into those folders, which, if you’re saying the coin / no-coin criteria doesn’t matter also makes the most sense.

The other argument people keep putting forward is that whatever system is created it should still allow the creation of MAME and MESS executables with ‘combined’ simply being another build target. This just seems to be avoiding the benefits of merging altogether. One of the big benefits of combining the projects is that in a default build every file gets built. When you’re dealing with a large number of cross-project shared files this makes the most sense, right now it’s very easy to break the MAME compile with changes in MESS (or vice versa) simply by not knowing that code was used in both. If all the dependencies are being built by default that simply can’t happen, in addition, you’re more likely to know where things are used for better testing of the actual emulation effects of any changes you do make. Creating an additional build target is again just more work, and ultimately offers less benefits, tiny builds of mame/mess specific stuff will always be possible with tiny.mak, but beyond that are unnecessary. Unsurprisingly, the easiest way to merge is to just keep the existing MAME target and integrate the MESS stuff into it, which again gives you the most benefits for the least amount of work.

So what’s the problem? Others have claimed that the work will take a significant amount of time, needs to be carefully planned, but again this just seems like stalling. Due to the size of the change and rapid daily changes which occur in both projects, it’s not really something you can take a significant amount of time over, it’s something which needs to be done in one swift action, and worked further on from there in order to keep everybody in sync.

In reality, it’s not a change which takes long to implement, at least not if you keep it simple. It takes about 2 hours if doing it from scratch, working out the modifications you need to make, working out where the conflicts between the project are and other such bits and pieces.

The other issues put forward against doing it the simple way are things like breakage of Save States due to MESS using a different signature, but that’s to be expected, and the signature issue could be resolved easily anyway. Given how often states break anyway I doubt many people keep them around.

More action, less talk is apparently the message coming from MAMEdev these days, and despite writing a lot that’s something I believe in, the whole concept of ‘if you want something doing, do it yourself’ is what has kept a lot of MAME development going over the years. With that in mind I’ve created a guide to creating an Ultimate MAME Build, one with MAME and MESS combined.

With this setup you can run anything from MESS in MAME, it ‘just works’, it’s wonderful. I can launch Megatech, or, if I don’t want the timer crippling the software, I can launch the standard Genesis versions. SNES, NES, PCE, Neogeo AES, NeoGeoPocket, you name it, it’s there, in MAME, working with the support from MESS. Want to see what state the PSX and Saturn are in? You can do that too, it sheds plenty of light on the work needed on those MAME drivers which you otherwise don’t see. I know not everybody is going to want to follow that guide.. so.. introducing

—- ULTIMATE MAME 0.144 —-

Source
32-bit Binary
64-bit Binary

The only real difference with the MESS stuff compared to what you’re used to with MAME is the launch syntax, as the majority of MESS systems use Software Lists instead of the internal Database, but as discussed in the previous post here, such support is needed for MAME and Multislot support anyway, so those on the ball won’t find it to be anything new.

“MAME genesis sonic” (or “MAME genesis -cart sonic”) will launch Sonic for the Genesis / Megadrive

some systems are a bit more complex, for example PCECD

“MAME pce -cart scdsys -cdrom draculax” would launch Dracula X for the PCE-CD. The syntax is more complex because that’s just how the system works.

for regular MAME stuff everything works just as it did before

“MAME pacman” will still launch pacman

There is absolutely no loss in functionality.

All in all it’s very easy to use, and having that functionality and code within the same project as MAME is invaluable for developemnt and testing alike. I just hope something like this is integrated officially sooner rather than later, because it will make working on heavily shared systems a lot easier and no doubt lead to many more bugs in MAME being quashed as the MESS drivers expose them.

I will give on word of warning. The ClrMAME support for the Software Lists is a bit flaky at the moment for users of that, they can still be imported however, and there is talk of integrating the lists into the -listXML output too. Some MAME frontends may struggle, but QMC should work because it’s been developed to the higher MESS standards already.

Anyway, in conclusion, I’ve always tried to push for progress, always put my money where my mouth is when it comes to such things, that’s exactly what this is here. I just hope that people do eventually start to see that this solution, which is by far the easiest solution, is also in many ways the most logical solution with the least complications and most benefits. This isn’t something that needs months and months of debate which ultimately end up nowhere, it’s just something which initially needs doing in one single operation, as soon as possible, with a level of commitment which means people will accept it and move forwards and work on any issues which arise from there otherwise it simply won’t get done as the last few years have shown.

Go to article.. »

Moving the Goalposts

November 9, 2011 Haze Categories: General News. Comments Off on Moving the Goalposts

While the biggest talking point of 0.144 might be the decision to not include the driver for the Cave SH3 based hardware after what can only be described as a polite request from Cave to not include it just yet this is not something which bothers me especially.

As a result of the work on this driver, even with it removed, MAME has gained significant improvements to the SH3/4 core (over double performance on many of the most common opcodes and a number of bug fixes making it more suitable for other applications), an audio core (the YMZ770) which could lay the groundwork for the eventual decoding of the MPEG audio in games like Star Wars Arcade (it’s very similar) as well as emulation of a number of peripheral chips such as the RTC9701 which combines a Real Time Clock and EEPROM. By comparison the actual gains made to MAME far outweigh the decision to not include the actual driver, the majority of the work I did there was these reusable parts (the SH3, the RTC) and to me it’s the basic component emulation which gives MAME it’s value as a project.

Despite this, I’m once again subject to very personal attacks from a member of the development team for even looking at the driver, calling it irresponsible and stupid, which is really hypocritical when you consider that the very same developer still has a ‘4 Bitcoin’ page offering to write a MAME driver for said system if people pay him! That doesn’t both me too much either, because said developer, despite clinging on to how he’s worked on whatever AAA console games has still only ever made minor contributions to MAME/MESS.

What does bother me is the loss of another feature in 0.144, far distant from the Cave stuff.

In 0.141u1 the Megatech driver was updated to work with the Softlist support from MESS (which is also in MAME by default), in turn this allowed a very clean implementation of the multi-slot technology used by the system in MAME using a standard of code which has been developed over the last few years to a high standard. This was around 10 months ago, and that support has been there ever since.

For the release of 0.144 I was working on the same thing for the NeoGeo MVS, I’d converted the driver to use a software list (with help from the MESS driver for AES which was already ahead of the curve by having support for a software list for many months)

I was coding to an established standard, for something nobody has complained about in 10 months, inline with the way another copy of the same driver already works to facilitate some source level cleanups, and give the option to run the MVS in proper multi-slot mode, with MAME now being the only reputable NeoGeo emulator lacking that feature.

At the last minute, after my submissions were accepted, that’s ALL been ripped out, but not just the NeoGeo list, the entire MegaTech list, the STV list, everything, gone, with only the internal database remaining. The very foundations which I was going to use for Multislot, gone. The existing support for Multislot in Megatech, gone.

Working for Mame lately is like talking to a three headed monkey, one says one thing, the other says another, then the third disagrees with all of that and puts your contribution to waste.

The reason given, apparently the software list standard isn’t good enough for MAME, it should *all* be internal. In essence I’ve been told that MAME/MESS need a *3rd* standard for ROM loading, a sort of pseudo soft-list internal hybrid. Given that this doesn’t exist yet, that means the 5 hours of work I put in already has gone to waste, and there is no actual way forward.

I don’t even think this makes sense, the MESS lists are getting to the stage of being mature, the technology works well, they were ugly at first but as things stand they work well, they’re effective, and for systems with removal media like home consoles, and the MVS they represent an absolutely ideal way of representing the cart content, with better documentation value than hiding stuff in a MAME source file and greater flexibility on top of functionality, for example, you get free namespacing which really helps make things more manageable.

The reasons just seem to come down to superficial stuff, the XML is ‘ugly’ (I agree, most XML is, but it’s a standard) or some false illusion that a list which isn’t hardcoded into the MAME binary has less ‘value’ than one which is, which is utter nonsense because they’re all distributed as part of the same package anyway.

So, the wheel is going to have to be reinvented again, which not only seems insulting towards the MESS developers who have spent 2 years developing and maturing the softlists, but incredibly frustrating to me, because it’s now a progress blocker, and IMHO senseless anyway, the two standards we already have are mature and suit specific use cases well, introducing a third one would just be a step back 2 years and instead of concentrating on improvements to the existing softlist system to allow dynamic adding of CPUs or Dipswitchs functionality is going to have to be added back from scratch and maintained together with the rest.

Such decisions just baffle me, if people had issues with the software lists there has been ample time to raise them, 10 months of the MegaTech driver using them, even longer in MESS, yet now, when real progress is being made, they get pulled?

I absolutely wouldn’t advocate using Software lists for the majority of the MAME drivers, because in the majority of cases it doesn’t make sense, but in some it really does, and considering the developer involved has come out and stated he’s in favour of the project unification between MAME and MESS I can’t really think of many moves which could actually be deemed more damaging than this one in terms of not showing support for the technology developed in MESS.

Maybe all this will blow over, and things will get reinstated, or reconsidered. I certainly hope so, and do have a great deal of respect in general for the developer who has vetoed this, even if I really can’t understand the reasons. The problem is when you consider that the message coming from the top of Mamedev is ‘More Action, Less Talk’ and more action just ends up being greeted with apparent contempt and culling of progress I’m getting very mixed signals which are off-putting and end up making it feel like a risk to write code for MAME, even when things seem like a dead certainty.

The other irony here is that around 13 years ago there was a MAME build I was promoting and helping with called KBMAME implemented ‘softlist’ style loading for NeoGeo in MAME, in a non-xml format which seems to be what some people would rather see anyway. At the time it was met with open arms by the community, and yet 13 years later just trying to do the same thing manages to turn into a huge commotion even when there are clear benefits to be had.

At the end of the day I need a standard I know I can work to, with confidence and that’s not something I consider unreasonable.

*edit* The lists have been restored for 0.144, alongside the internal ones. While I’m not a big fan of the duplication this leads to it’s definitely a more amicable solution until something else is worked out. My frustrations at the original handling of this remain, but I’m glad to see some sanity has been restored ;-) From the looks of things this will be worked out further between 0.144 and 0.145 but in the meantime progress can continue. I do think that this is putting the MAME / MESS merger type stuff at a critical point tho because a solution which is fair to all needs to be found, and applied appropriately and consistently across the drivers of both projects to avoid creating further divides in standards.

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.

Close