From afc960ba7b25baadb9a6e53c094ccba6616961f6 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 15 Jun 2012 06:42:35 +0000 Subject: Doing renumbering for controller port players, to enable dynamic controller boards (no whatsnew) --- src/emu/ioport.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/emu/ioport.c') 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(); -- cgit v1.2.3-70-g09d2