Why are you guys making a dat file for Mame instead of just working with the Mame dev's on getting the controls listed correctly within the Mame source itself?
That is just not possible. While through out this project we have found fixable problems, and have fixed them, there are some stuff that just isn't fixable. One thing we (HowardC, Urebelm and I) have fixed is getting all the mame game to use new inputs that were in mame. Like using both Pedal constants, using the Z axis for a pedal instead of robbing an axis from another player, etc... Also like minwah said, the devs can be very stubborn.
Technically, for the most part, mame does document the right controls but it documents the wrong controls with it. Example. Discs of Tron, if oyu look at it in listxml it says it is a trackball. While that is wrong int he output mame does not just use the tball for input. The tball is a hack to simulate the up down spinner. However int he driver dial, joy8way, all the buttons are in there correctly. So it's actually a matter of listxml not showing all the controls defined for a game. This has been mentioned many times in the last several years. Hopefully now that mame is going to XML they can output that correctly. The old listinfo format was limiting.
Then there are drivers that have one macro setup to define the controls. Usually this is done because the only difference between games is a rom swap, the rest of the hardware is exactly the same. So they just assign the control macro to all the games. So if the macro defines 4 buttons but the games uses 3 buttons mame will output 4 buttons in listxml. This is very widespread in mame. This is easily fixable but takes ALOT of time.
Then there is the controls themselves. same control, different name. Example is spinner and 360 steering wheel. They are the same thing, just called something different. In mame they are listed as dial. this is another task of the controls.dat project, to list a better description for the control used

And then, though I think this was fixed with .85, 2way joys showed up as 8way joys. This is because int he code they didn't have any room for the bit pattern to define this without making major changes.
Then ther are lapses in thinking. In .85 720 now uses an anlog joystick. Well, dial was more accurate. They should have added analog stick as a hack like they did tball for dotron.
So, to sum up. The major reasons the controls.dat project exists is
1) To accurately document the controls a game used, using more descriptive terms. Like 270 Wheel, 380 Wheel, Throttle, etc..
2) To accurately document the CORRECT controls, I.E. a game uses 3 buttons instead of 4, or uses and up/down spinner instead of a trackball.
3) To make dealing with inconsistancies easier. 720 is this example. In the controls.dat this will always output 720 controller (or whatever we have defined for it) even if in mame it changes from dial to stick.
4) To relate the above controls with how they are defined/hacked into mame. This allows FE devs to accurately display control information. An example of this is the johnny5 viewer. With this part HowardC can read your ctrlr files and accurately display what controls you have do what in mame for a particular game.
I know some of that will go over your head unless you understand the mame source code that deals with this.