MAME 0.84u4 was released on 25 July 2004.
There have been some major internal changes to the input system as of this build. Because of the extension to 32-bits, all previous INP files are invalid. MAME now writes 4 bytes per INP entry instead of 2.
The known contributors for this version are, in alphabetical order:
The known contributions for this version are, in the order specified in the whatsnew:
- Aaron Giles added a number of commented-out default strings and modified all drivers to use them.
- Aaron Giles changed the format of .cfg files to use XML. All old .cfg files are useless, just toss them away. This should allow for easier backwards compatibility in the future.
- Aaron Giles changed MAME so it now requires the expat library for XML support. This is included in the distribution, and is built automatically by default. You can comment out BUILD_EXPAT in the main makefile to disable this behavior and link against a precompiled version if you wish. Similarly, zlib has been modified to do the same thing and is now included with the MAME source. Comment out the BUILD_ZLIB flag to turn off this behavior and link against a precompiled lib.
- Aaron Giles revamped most of the input and input port system. This means a number of changes for those who do their own OSD layer. All input APIs are now unified -- there is no notion of "keyboard" versus "joystick" anymore.
- The following APIs are now obsolete:
- Instead there is a new set of simpler APIs:
- The code list returned by osd_get_code_list should include entries for every keyboard key, every joystick and mouse button, digital versions of joystick analog axes (e.g., joystick X axis up), as well as entries for analog axes on joysticks, mice, lightguns, etc. Essentially any input you wish to expose to the user should be added to this list. Note that if you add items to this list that don't map to the standard defaults, you must specify one of the following to indicate what type of input you are providing:
- osd_get_code_value is then later called to retrieve the value for a given code. Digital inputs should return either 0 or 1. Absolute analog inputs should return values between ANALOG_VALUE_MIN (-65536) and ANALOG_VALUE_MAX (65536). Relative analog inputs should return values that approximately scale to 512 units per pixel (e.g., an X axis moving left 4 pixels should return -4*512 = -2048).
- Finally, osd_customize_inputport_list replaces osd_customize_inputport_defaults and allows you to add any OSD-specific UI input ports, as well as mess with the default configuration. Note that at this time, the controller.ini file support is currently disabled in the Windows build.
- Aaron Giles changed the configuration of ports as well. You can now map any analog axis to an analog port in the standard input UI. There are now three entries per analog port. The first entry is the analog mapping. The second and third control the digital decrementing and incrementing sequences. To map an analog axis, just hit ENTER and then move the axis in question by a large amount.
- Aaron Giles added 32-bit port read handlers, and extended input port internals to 32 bits.