Main > Main Forum
the state of mame
bitbytebit:
--- Quote from: Haze on January 07, 2011, 02:15:08 pm ---
--- Quote from: bitbytebit on January 07, 2011, 12:50:08 pm ---
--- Quote from: Haze on December 21, 2010, 11:10:13 pm ---
--- Quote from: AndyWarne on December 21, 2010, 05:39:43 pm ---
IMHO there is one huge issue with Mame which should be high on the "TODO" list.
Its currently not possible to exactly emulate a game in native resolution unless DirectDraw is used. Direct3D does not work when this is attempted. This is a big drawback because DirectDraw is going out of support and is very buggy under Windows 7.
Its a major part of the principles behind Mame that the games should be emulated as exactly as possible and using a native resolution (or a close fit with equalized borders) is a major part of this.
When using Direct3D there is no option to turn off stretching, which distorts the image and loses the advantage of native resolution, ie 1:1 pixel mapping. Rather than adding small equal borders to fill out to the nearest available resolution available on the hardware, the picture is always stretched to fit the screen.
--- End quote ---
I think one of those problems is that as well as DirectDraw going modern OS's are doing what they can to get rid of the concept of 'resolution' (or at least the ability to change it to something non-standard) completely.
You've only got to look at current technology which due to it's nature is 'locked' to a single resolution (the native display res) and frequency. If you want things bigger / smaller these days it's done by scaling the graphics, not changing the resolution.
Supporting such things is fighting against the tide, and you might quickly find Linux to be a better option if you want more control over them (although I don't know, it might already be worse there, I can't say I've paid much attention)
Does SDLMame do a better job on Windows?
--- End quote ---
Yes currently Linux is going the opposite direction with respect to Windows in opening up the ability to control the video hardware directly in the kernel layer. There are employees of the major video card companies (ATI has one hired just for that purpose) actually writing the code to interact with the video cards, so we are now able to get SDLMame to do a near perfect job at resolution display and refresh rate compared to Windows. It's very new and within the last month really ready for the ATI cards, in the stable kernel probably in March this year for page flip vblank timestamp support there.
I see the concept of resolution being being somewhat left behind even in the Linux developments but am myself able to support kernel patches to open it up fuller than it's been in Linux or Windows in the past (there's a few little issues they put in there to work around with 15khz console display and group of 'default' resolutions to step around). I've talked with the ATI developer and he's open to listen but still admits they are as everyone else focused on high end displays and HDTV's, but there is still the ability to program modelines without restriction in the Linux DRM layer and ATI drivers (and others either mostly done or in the works).
--- End quote ---
Well for that argument, there you go then. You can't expect all the developers to switch over from Windows, but by virtue of keeping the SDL version in the main branch (for cross-platform reasons) Linux is likely to prove to be a good platform if you're interested in that type of things. Windows is becoming less and less of one. (Windows 7 even has nearly unavoidable, undetectable frameskip in everything, even if you're syncing each frame!)
What people seem to be complaining about are mainly the layer(s) between the emulation (which we strive to make as accurate as possible) and the user.
The emulation layer emulates the PCB,
The input layer maps inputs in a way deemed suitable by the developers to the emulation layer (the emulation can cope with anything really)
The OSD layer managers user interaction (display of the output, and actual reading of the input) This is the platform specific layer which talks to devices on your PC
The emulation layer is designed to be as accurate as possible
The input layer is designed to provide a suitable mapping for the common input devices likely to be supplied by the OSD layer
The OSD layer is designed to work with the most common platform used for development (in this case, whatever the latest version of Windows is)
You can't expect the core development team to maintain multiple versions of each layer. Two OSD targets (win32 / SDL) are enough, and that's only possible because there ARE developers dedicated to maintaining the SDL part. If those developers were to drop out of the project (R.Belmont etc.) then chances are the SDL part would be dropped too, because Aaron etc. has no real interest in maintaining it himself.
That's why it makes sense for an offshoot project to handle what people want here, they're not going to have to fiddle with the actual emulation layer at all, it's been done for them, and it sounds like from what's just been said that Linux/SDL takes care of the other 'exact output' concerns people expressed, which again, is already done for them.
--- End quote ---
I really like the way that it's setup in layers like that, have been digging into mame lately and have discovered exactly what you're saying. It's pretty easy and simple to create a separate OSD, if you want to maintain it yourself of course, or to change/patch things in the OSD without touching the emu layer at all. Thanks for giving some detail on the structure, good to know for the most part I'm understanding the basic structure and design ideas behind it.
I definitely wouldn't want to have developers change what they use and seems like they do a great job at supporting all platforms as it is. It's great that mame works well for all systems and the sdl osd part and windows part both are actually quite amazing seeing how that all works on both systems like it does. I think a direct effect of the goal of mame, not wanting to get into just making it work and focusing on the PCB emu area and being fully correct there, allows it to work out of box with Linux because there's a separation of the part that interfaces SDL and the actual emulation layer. Otherwise it'd definitely get messy having anything more inside the core which would have to become OS specific.
I have been curious about the way that the OSD.update() basically seems to be the sole driver of the osd layer itself, or input/audio/video into the UI. Looks like it works, and the thread model for multithreading works with that as it is currently pretty good. Have wondered about if that whole interface could be made into more of an API type interface between the OSD and mame core for audio/input/video or maybe I'm just not seeing the reasons why that would not be too helpful. I'm guessing there might be some issues with driving things in more than a single function call to the OSD.update() and called with the core mame video.frame_update() on the vblank callbacks. It's something that seems interesting though, how the OSD and mame emu part communicate, the entire API between the two, since to me the most interesting part is plugging in the OSD to the mame emu PCB board and being able to pull out the functionality into the OSD. At least interesting to study the code and hopefully I'll get some ideas eventually on ways to help improve that area of mame, although definitely not something that involves the real meat of mame with the emulation and game drivers (which I like the reverse engineering stuff, and have done that with real hardware chips and firmware in Linux drivers before, but also know others are probably better at that side of it than I am).
Vigo:
--- Quote from: CheffoJeffo on January 07, 2011, 01:48:16 pm ---
--- Quote from: Vigo on January 07, 2011, 01:32:20 pm ---I really don't see a lack of appreciation from anyone except a couple people here. Most of us just want to see MAME do better...and not die. :dunno Sorry for putting out ideas and opinions on a forum* without being part of the Mame "secret circle" ::)
...and you can say the project is properly guided, but how hard is it to guide nobody? To quote Haze:
--- End quote ---
No need for you to apologize -- you have expressed your appreciation (as opposed to a number of others in this thread) and just have a differing viewpoint. Ain't nothing wrong with that. :cheers:
I am as far away from any "MAME secret circle" as you can be in this hobby, so I'm rather baffled by your statement. As I said, I don't have a MAME box running and the stuff I do have running MAME are boards that the MAMEDevs hate with a passion. I've also objected to some of the stuff that has been included in MAME.
I will say that the project is properly guided by developers -- that is, explicitly, that it is proper that the developers are the ones who should guide it, as opposed to catering to the mob (or those in the mob who yell loudest). I think that is somewhat different than the sentiment that you seem to be assigning to me.
Thanks for the tips as to what a forum is ... I must have missed that along the way. ;)
--- End quote ---
Sorry Jeff, that "secret circle" stuff wasn't a jab at you. I just read one too many times the argument about needing to be a developer to have the right to complain. You're fine by my book. :cheers:
I know there is an "angry mob" who only wants to complain, but I think there is also untapped passion that is being squelched by the very reason that pretty much every suggestion people have made on this thread so far has been shut down. If MAME is truly in Peril, then we need fresh sets of eyes looking at the project and trying to make these "silly" ideas to work. There is nothing to lose by trying. If the newer versions of MAME suck big time because of it, people will just stick with the old versions or a better devient version will come out. It's better than having no new versions of MAME at all.
Mikezilla:
--- Quote from: ark_ader on January 07, 2011, 03:18:27 pm ---And Saint locks the thread............now!
--- End quote ---
I love how you do that right after MY post. :P
CheffoJeffo:
--- Quote from: Vigo on January 07, 2011, 05:03:58 pm ---If the newer versions of MAME suck big time because of it, people will just stick with the old versions or a better devient version will come out. It's better than having no new versions of MAME at all.
--- End quote ---
Can't argue with that ... I'm at .90 myself.
:cheers:
Hoopz:
.94 which includes Golden Tee (which started in .92).