Okay, an inteligent point deserves an inteligent answer. This is a valid point, from a user's
point of view:
My answer to all that protest 3rd party emulators is if it can be done more streamlined, why not do it. Why not just have 3d rendering report to a renderer like in many emulators (Nulldc for one), so that 3d information can then be passed to the gpu. If you are to separate the two from themselves then you can then support other people to find ways of better emulation of the graphics themselves. If setting for a specific game were not properly supported by the renderer then simply setting it back to software is always an option. It just would make so much sense to put more stress on the gfx card when processing the game, when you can get enormous cards for next to nothing now a days.
If this were easy while still allowing mame to render authentically (some other way), I'm pretty sure someone would have figured it out. (It's actually closer to being possible now then it was pre-0.106, if I understand mame design correctly.)
However, from a developer's point of view
, there are three major reasons besides the "goals" and "helps only a few games a small amount" points raised in earier posts, on why not in official mame. The combination of the five all contribute to why it's the way it is.
Bugs, Fake bugs, and non-bugs: MameDev removed the hiscore.dat hack because it introduced bugs that people reported as emulation bugs, but were introduced only because of the hiscore.dat code. It was a headache to work with. Using 3d cards for emulation
(or resemblence there of) would be like adding back hiscore.dat. (see example by VicBond007.) Having the 3d card code done by 3rd parties would mutiply bug report mix ups by the number of plugins (aka making it far worse than hiscore.dat). At the same time, the changes themselves will introduce there own bugs (anyone remember the thirteen
u updates in the 0.106-0.107 transition for the last video change?).
Increased amount of code to support, aka code bloat: Right now, official mame can render (post
-emulation) the images three ways: d3d, ddraw, and gdi. (There are other ways to render in other builds, sdlmame, etc). However, this is post
emulation. (currently) If you wanted to do the emulation on the 3d card, each video chip emulated would need the current emulation way + a new added 3d card way (assuming only one 3d card way). That means doubling the code (at least) of the hardest to emulate video chips
(we don't need to speed up the old, easy to emulate chips on the 3d cards, even though those would be the easiest to do, right?). Much of this could actually could be "pushed off" to 3rd party by creating a "middle langauge", something like what was done for easing up drc for the different OSes and 32/64 bit multipliers that drc speedups were facing. However, that wasn't easy, and neither would doing the video; it would take some MAJOR recoding of all the video shuff. Again. Plus see bugs problems with 3rd party.
Portability (or lack there of): Unless coded correctly, adding 3d card use for emulation with reduce mame's portability. Currently, mame runs on windows, MacOS, & linux (including PS3). If done incorrectly, this could tie mame to one OS and one directX version (assuming it uses directX). If directX or windows changes something needed by the 3d card code, SOOL until recoded. But doing it correctly involves a lot more work than doing it quickly, and AFAIK, only a few (if not only one) people in mameDev have the skills to even think about doing it right. And two of the three I'm thinking about don't use windows/vista, nor run mame in windows/vista
; so the "most people use windows so why need portability? (so why not do it the easy way?)" point will not
convice the majority of the people that might be able to do it, and the remaining wouldn't want to alienate some of the major coders in the mameDev by forcing windows only.
I'm not sure what's the biggest reason: bugs, code bloat, portability, GPU will only help a very few games a small amount, or keeping with the goals, that's the moving (or not moving, depending on your POV
) force on this issue. Heck, probably most people differ the exact whys even when agreeing "no" view. However, I wouldn't be surprised if something like this might happen in 5-10 years if CPU power increases slow down as much as people think. (using CUDA gpu power is slightly more possible, IMO though.) OTOH, if the CPU hardware continues to keep up with emulation, so only ~5% of the games run too slow in mame, I would be surprised if it does happen.