mame/src/emu/config.h
Aaron Giles 096331c856 Restructured input port internals and cleaned up inptport.c:
* Input ports are now maintained hierarchically. At the top
level are input ports, which contain a list of fields. Each
field represents one or more bits of the port. Certain fields
such as DIP switches and configuration switches contain a
list of settings, which can be selected. DIP switch fields
can also contain a list of DIP switch locations.

* Normalized behavior of port overrides (via PORT_INCLUDE or
by defining multiple overlapping bits). All fields within a
port are kept in strict increasing bit order, so altered DIP
switches are now kept in the appropriate order. This addresses
MAMETesters bug 01671.

* Live port state is now fully separate from configured 
state. This is manifested in a similar way to devices, where
a const list of ports can be managed either offline or live.
Each port has a pointer to an opaque set of live state which
is NULL when offline or valid when live. Each port also has
a running_machine * which is also NULL when offline.

* Because of this new arrangement, the conversion from tokens
to a list of ports now requires reasonably complex memory
allocation, so these port lists must be explicitly allocated
and freed (they are not mantained by automatic resource
allocation).

* Custom and changed callbacks now take a pointer to a field
config instead of a running machine. This provides more
information about what field triggered the change notification.
The machine can be found by referenced field->port->machine.

* The inptport.c module has been cleaned up and many 
ambiguities resolved. Most of this is internal, though it did
result in osd_customize_inputport_list() being changed to
osd_customize_input_type_list(). The parameter to this function
is now a linked list instead of an array, and the structures
referenced have been reorganized somewhat.

* Updated config.c to pass machine parameters to its callbacks.

* Updated validity checks, XML output, and UI system to handle
the new structures.

* Moved large table of default input settings to a separate
include file inpttype.h.

* Removed gross hacks in trackfld and hyperspt NVRAM. These
may be broken as a result.
2008-05-15 16:25:03 +00:00

62 lines
1.5 KiB
C

/***************************************************************************
config.h
Wrappers for handling MAME configuration files
Copyright Nicola Salmoria and the MAME Team.
Visit http://mamedev.org for licensing and usage restrictions.
***************************************************************************/
#pragma once
#ifndef __CONFIG_H__
#define __CONFIG_H__
#include "mame.h"
#include "input.h"
#include "xmlfile.h"
/*************************************
*
* Constants
*
*************************************/
enum
{
CONFIG_TYPE_INIT = 0, /* opportunity to initialize things first */
CONFIG_TYPE_CONTROLLER, /* loading from controller file */
CONFIG_TYPE_DEFAULT, /* loading from default.cfg */
CONFIG_TYPE_GAME, /* loading from game.cfg */
CONFIG_TYPE_FINAL /* opportunity to finish initialization */
};
/*************************************
*
* Type definitions
*
*************************************/
typedef void (*config_callback_func)(running_machine *machine, int config_type, xml_data_node *parentnode);
/*************************************
*
* Function prototypes
*
*************************************/
void config_init(running_machine *machine);
void config_register(running_machine *machine, const char *nodename, config_callback_func load, config_callback_func save);
int config_load_settings(running_machine *machine);
void config_save_settings(running_machine *machine);
#endif /* __CONFIG_H__ */