diff options
author | 2012-06-15 06:42:35 +0000 | |
---|---|---|
committer | 2012-06-15 06:42:35 +0000 | |
commit | afc960ba7b25baadb9a6e53c094ccba6616961f6 (patch) | |
tree | 6a8a08bc67b7be007ee1f9cd2da8bbf91633bfdb /src/emu/ioport.c | |
parent | 429a59ece780286bba911f27cad34a72715edc65 (diff) |
Doing renumbering for controller port players, to enable dynamic controller boards (no whatsnew)
Diffstat (limited to 'src/emu/ioport.c')
-rw-r--r-- | src/emu/ioport.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/emu/ioport.c b/src/emu/ioport.c index 380e23c3b4d..2a498c79698 100644 --- a/src/emu/ioport.c +++ b/src/emu/ioport.c @@ -2652,6 +2652,26 @@ time_t ioport_manager::initialize() mame_printf_error("Input port errors:\n%s", errors.cstr()); } + // renumber player numbers for controller ports + int player_offset = 0; + for (device_t *device = iter.first(); device != NULL; device = iter.next()) + { + int players = 0; + for (ioport_port *port = first_port(); port != NULL; port = port->next()) + { + if (&port->device()==device) + { + for (ioport_field *field = port->first_field(); field != NULL; field = field->next()) + if (field->type_class()==INPUT_CLASS_CONTROLLER) + { + if (players < field->player() + 1) players = field->player() + 1; + field->set_player(field->player() + player_offset); + } + } + } + player_offset += players; + } + // allocate live structures to mirror the configuration for (ioport_port *port = first_port(); port != NULL; port = port->next()) port->init_live_state(); |