I may regret wading into this flame war, but I would like to try to offer a helpful suggestion.
Reading what xiao2 has posted, I get the feeling that he is reacting to some degree to a feeling of helplessness, because he doesn't have the programming skills necessary to change the MAME source code himself. I think we can all sympathize when feeling frustrated because we can't do something ourselves and those who can, don't help (even if it is for good reasons, such as that they are volunteers who shouldn't have to do something they don't want to!).
I think that people who are not devs can make significant contributions to MAME (yeah I know I am stating the obvious here, given how much important non-developer stuff has been done on MAME), and even in areas that they might not have realized they can help with.
For example, the topic at hand: I myself have spent a considerable amount of time puzzling through MAME's input system to try to figure out how it works so that I can figure out how to best utilize it in my project. One thing that I thought I could conclude, but was not certain of - because I certainly don't know all of the myriad complex details that went into creating MAME and don't want to jump to unfounded conclusions - was that there seems to be inconsistencies and just plain old gaps of logic in the way that some inputs were defined. There are lots of places where an input type is used that is not consistent with how the same input might be used in a different game (driving game shifters seem to be riddled with this problem).
OK, that being said, the problem is not that it is particularly hard to program these things; the problem is that it's hard to keep everything consistent when a variety of contributors are involved. I myself, if I were asked to include a new driver in MAME, would be unlikely to make all of the correct choices in how inputs are defined because there are so many complex details involved that I have little knowledge of; and this is assuming that there even *is* a 'correct' choice in many cases.
All that being said, I have often thought that what MAME really needs for any individual game is a very clear and well documented specification of what needs to be done to accurately represent that game in MAME. Professional programs are normally implemented starting with a specification, which defines in great detail the specific behaviors that the program must exhibit, and this specification is translated by the programmer into a program that does what the spec says it should. MAME could benefit from a similar approach, where the specification for a game would be a greatly detailed document describing, among other things, the controllers that the game supported, what they were named, how they looked, how they were positioned, even how they were made in some circumstances where the controller was unique and this is important information to preserve, even if it cannot be acted on directly in MAME source code.
What I'm getting at, in a very verbose way, is that the job of creating an emulation of a game is only partly a coding job; a very large part of it - maybe even the largest part of it - has nothing to do with code, instead involving things like dumping the roms, collecting information on the hardware (schematics, etc), documenting the behavior that needs to be emulated in the greatest possible detail, etc. And non-developers can - and do already, obviously - contribute to all of these non-coding aspects of the emulation.
So for whatever frustration you have about MAME's emulation, I think that you don't have to feel powerless in solving the problem. One very useful thing you can do is to document the issue, in very great detail, and in a concise form that could lead a programmer to more easily code up your requirements.
I've dabbled a bit in contributing some patches to MAME, and I would personally be happy to help improve it in ways such as making controllers work better; and I would actually be able to do this if I had any idea of what was wrong and what the right behavior was supposed to be.
I'm just saying that, if you do the work of making concise and well-documented requests for improvements to MAME, then people like me (and I'm guessing there are many people out there who could/would contribute coding in this way) would have a chance to help you out.
You could even take this to its ultimate conclusion and organize a project to track such well-detailed and well-documented requests, so that not just your own particular pet problem can be fixed, but everyone else's as well.
|