MAME®, the Multiple Arcade Machine Emulator
Copyright © 1997-2007 by Nicola Salmoria and the MAME team
I. Purpose
MAME is strictly a non-profit project. Its main purpose is to be a reference to the inner workings of the emulated arcade machines. This is done both for educational purposes and for preservation purposes, in order to prevent many historical games from disappearing forever once the hardware they run on stops working. Of course, in order to preserve the games and demonstrate that the emulated behavior matches the original, you must also be able to actually play the games. This is considered a nice side effect, and is not MAME's primary focus.
It is not our intention to infringe on any copyrights or patents on the original games. All of MAME's source code is either our own or freely available. To operate, the emulator requires images of the original ROMs, CDs, or hard disks from the arcade machines, which must be provided by the user. No portions of the original game code are included in the executable.
It's there in black and white (or black & blue in this case because I'm quoting) Mame is about documentation and preservation, not gaming. Now maybe I'm just getting old, but those are very noble goals to have, without M.A.M.E. all the arcade games we played in our youth and still do today thanks to M.A.M.E. would be lost to history within a couple of generations at best, M.A.M.E. primary goal is to prevent that from happening and that is where it's strenght lies. Where as most emulators exist only to make games playable on another hardware plateform and little more, they soon fall victum to a loss of interest once the most populer games are working, You can find the rallics of dozens of dead emulation projects on the Interent, projects that were never completed, they reached a point in their developemnt and then just slowly died out. M.A.M.E. will go on as long as their a people interest in presevation of all Arcade games, and that is why I believe it has a long life ahead of it, long after all the populer games are fully emulated their will be someone in M.A.M.E. still interested in cracking encryption on sum game none of us have heard of, and couldn't care less about, just because it there and without it M.A.M.E. would be incomplete.
I Hope there is never a version one of M.A.M.E. until the every last acrade machine ever made is emulated, only on that day should the counter hit M.A.M.E. 1.0 and one week later the Dev's will still stick out M.A.M.E. v1.00u1 because they still will not be happy.
Now onto the comments:
First off, this statement kind of surprises me. Without even debating whether or not 3d acceleration should be used, this statment , to me, is just incorrect. My prime example is NFL Blitz. MAWS currently suggests that this game is supported and is well emulated in MAME, which by your logic suggests that everyone is getting to play the game as it was in the arcade. I personally do NOT recall chopped up sound and an unplayable frame rate in the arcade release, but perhaps I am mistaken. Blitz doe NOT "look and work just like it did in the arcade." because it was playable in the arcade, and it is NOT playable in MAME without very high-end hardware.
I think I see where your trying to go with this, but it feels like you got lost in there somewhere, by your logic Crysis is not the same game if it's played on a celeron with a 9800pro, than if it is played on a QX9750 with dual 8800 ultras in SLI, simple on the grounds that the celeron is to slow to run the game, the game has some how changed, then in fact it hasn't, if it had changed in it's nature in would run on the Celeron without issue, but it won't as it a resource hog and always will be. So just because a PC isn't fast enough to emulate a game in M.A.M.E., doesn't mean M.A.M.E. has change the game in any way it is still accurately emulating the game, it's just the PC M.A.M.E. is running on is unable to do it well.
Perhaps the emulated hardware functions much like the arcade hardware, but this is not the same as the game running as it did in the arcade.
It never will be without the physical arcade machine to play the game on, and that's where this forum kicks in, because once you have a perfect emulation of an arcade game you need a prefect reproduction of an arcade machine to play it on, otherwise it never feels like the real thing, most people here are on a quest to recapture the feeling of playing on a real arcade machine.
now I do not have any idea how complex it would be, but i would also be willing to bet it is not simple to emulate every custom graphics chip used in the arcade with software. Perhaps someone more knowledgeble should weight the costs and benfeits of such an endeavor? Incidentally, you are correct that two different 3d card models can produce different results, but by that same train of thought, two different CPU's also do not produce the same results. Somehow we have managed to run MAME on everything from Pentium 166's to Athlon X2 5000+'s. I would doubt graphics cards would pose too much of a problem in this department since Direct X and OpenGL can handle some of the compatability issue you are referring to here. I could, of course, be wrong on this point as 3d acceleration is not my line of work .
You make a couple assumption about CPUs and GPUs that are not total correct and are easily made, I'll try to explain without sounding like a total geek, the thing you need to understand is CPUs and GPUs are two total different beasts, they are made the same way and the function in the same basic way, but there are a couple of very big differences, a CPU is a general purpose device it does everything well, where as a GPU is a fixed purpose device design to do a few things over and over very well and very quickly, the other big difference is CPU are very standardised everything that works on an AMD should work on an INTEL cpu and you should get the same result everytime, this is not so with graphics cards, they are anything but standardised and this is why you see differences in image quality between GPUs even when displaying the same scene and why graphics drivers need endless tweaks and updates to make them work with new software.
Now because of these differences a CPU is easier to emulate on as it can process any standard type of calculation quickly and with easy, as where GPU is limited to a small number of calculation types that it can preform in many difference ways. Now your average custom emulated arcade chip isn't going to be nice enough to spit out a string of graphics commands in a form that is going to be easily passed to your GPU to process, what you get is a whole bunch of request for calculation to be preformed on a bunch of data, now those commands can basically be pass directy to a CPU and as long as they are directed to the right places it will understand them and preform the required calculations with little to no change in their format. On the other hand graphics cards expect data to be handed to them in a set way, that's why we have a graphics API, a program hands data in standardised way to the API then it in turn hands it to the graphics drive that finally hands it to the GPU in a format it likes, now the problem is the commands and data stucture of the emulated graphics chip are unlikely to be the same as that of Directx or OpenGL, so to make use of your GPU the emulator still has to hand the commands to your CPU to process but instead of just doing as they say in preforms a bunch of commands to translate the commands into a format that the suits the API being used and then pass this newly formated commands to GPU.
Now because a single command may require thosands of calculation to be preformed on a piece of data before it outputed, while changing the format of that command may only take a few hundred at worst, you will see a notice preformance gain by getting the GPU to do all the gunt work, but the CPU is still doing a whole hell of a lot of work do all those translations, plus emulate the arcade CPU(s) sound chips and half a dozen other smaller chips at the same time, in a number of cases your CPU will have more trouble emulating the original arcade CPU than it does the graphics chip, due to the structure of the commands the original CPU used, these may be badly suited to x86 CPU design and make for extra work to process. There are always going to preformace gains to be had from using 3D acceration the problem is that the gains are going to be noticably CPU limited (like it's pointless running a 8800 gts on a celeron 300), and once that data is passed to GPU you have little control over how the GPU processes it, the result will vary noticable from one GPU to another and not just in colour shading. You gain some graphics preformance but at the cost of accuracy of emulation.
I hope that helps you understand the issue a little better, and to those in the know already, yes I made several generalisations and simplifications in order to make it more understand to everyone, so please don't read into it to much.
so you are saying that by dumping 3d rendering to the GPU and saving CPU cycles, there will be no increase in performance? I guess I can unplug my videocard and play Crysis with my onboard graphics processor.... good to know. I'm not saying that it isn't less work to use 3d acceleration, but assuming it is done in a fashion comparable to 99.99% of the 3d software avaliable, it is guaranteed to increase performance.
I explained this one above, and if Crysis would allow you to, you could run it entirely with software rending, which might not be a bad idea, since atleast then you could run it on a computer cluster and have it look good and run well at the same time. (really, just see the above section, I'm just being a smartass here
, I think Crysis is a rubbish game unless you like the eye candy and a slide show.)
As i mentioned earlier, Blitz is apparantly emulated well in MAME, its not an incomplete piece in MAME at all. Yes the OC'd C2D processor will work to play it decently, but how is this any different than using a GPU in the grand scheme of things? The power of that processor is unparalleled by anything avaliable from the mid to late 90's, yet it is fine to use to emulate the arcade machine, while using a 3d accelerator is considered taboo to use because the original arcade game didnt use it? please....
Using the GPU is only an issue because M.A.M.E. is about accuracy of emulation first, so the DEV's, myself and many others rate this more important than any preformance gains there might be to have in the short turn by using a GPUs for 3D acceration, because you have to give up accuracy for said preformace. And give credit where credit is due when it comes to Acrade hardware, some of these systems used up to 4 GPUs multiple CPU and dozens or other standalone chips, their preformance at the time of there release was years ahead of anything on the PC and that's why they're so hard to emulate today.
I think that the Mamedevs could accurately emulate arcade hardware and still offload some of the processing to the GPU. Mame already has Hardware stretching and filtering.. and the sound effects in game make use of APIs right? so why not do the same with the graphics in 3D games? Perhaps some programmers will come along to create an offshot of Mame that could focus on such games. Hell, I large percentage of people play Mame on a PC monitor and a keyboard.. How accurate is that? seems if Mamedev were so concerned about duplicating arcade hardware then Mame wouldnt even have keyboard or mouse support, especially for light gun games, since that should be considered an unauthentic "hack"
By that logic they shouldn't emulate anything at all, because anything they do is a hack, or if they are going to emulate something, they may as well use as many hacks as they can come up with as long as the games are playable, stuff what they look and act like. We don't have personal holodecks yet so M.A.M.E. is as close as the DEV's can get with todays technology to the original thing, for everything else I suggest reading the rest of the Forum and building your own Cabinet.
M.A.M.E. is they way it is because it purpose is to be that way, the ability to play games is secondary to it's reason for being, and that's the way I hope it stays, The lastest generation of CPUs from Intel all but eleminate the preformance issues in most ROMS, and the Additional price tag for that preformance is no more than it is for a good mid range 3D graphics card. So until it can be done without the loss of accuracy I think 3D acceration is best left on the shelf for now.
I guess that's my three bucks twenty and a stick of chewing gun.