summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/ioport.c
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2012-06-15 06:42:35 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2012-06-15 06:42:35 +0000
commitafc960ba7b25baadb9a6e53c094ccba6616961f6 (patch)
tree6a8a08bc67b7be007ee1f9cd2da8bbf91633bfdb /src/emu/ioport.c
parent429a59ece780286bba911f27cad34a72715edc65 (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.c20
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();