mirror of
https://github.com/holub/mame
synced 2025-05-21 21:29:15 +03:00

* 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.
62 lines
1.5 KiB
C
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__ */
|