diff io.c @ 913:a5a51465f8b0

Allow IO device config to be overriden by ROM DB
author Michael Pavone <pavone@retrodev.com>
date Tue, 08 Dec 2015 19:33:58 -0800
parents 599e2861f484
children 28ec32e720b2
line wrap: on
line diff
--- a/io.c	Sun Dec 06 19:29:34 2015 -0800
+++ b/io.c	Tue Dec 08 19:33:58 2015 -0800
@@ -645,12 +645,12 @@
 	unlink(sockfile_name);
 }
 
-void setup_io_devices(tern_node * config, io_port * ports)
+void setup_io_devices(tern_node * config, rom_info *rom, io_port * ports)
 {
 	tern_node *io_nodes = tern_get_node(tern_find_path(config, "io\0devices\0"));
-	char * io_1 = tern_find_ptr(io_nodes, "1");
-	char * io_2 = tern_find_ptr(io_nodes, "2");
-	char * io_ext = tern_find_ptr(io_nodes, "ext");
+	char * io_1 = rom->port1_override ? rom->port1_override : tern_find_ptr(io_nodes, "1");
+	char * io_2 = rom->port2_override ? rom->port2_override : tern_find_ptr(io_nodes, "2");
+	char * io_ext = rom->ext_override ? rom->ext_override : tern_find_ptr(io_nodes, "ext");
 
 	process_device(io_1, ports);
 	process_device(io_2, ports+1);
@@ -801,7 +801,7 @@
 		bindtype += devicenum-1;
 	}
 	mice[state->mouseidx].buttons[buttonnum].bind_type = bindtype;
-	
+
 }
 
 void process_mouse(char *mousenum, tern_val value, void *data)
@@ -810,7 +810,7 @@
 	tern_node *mousedef = tern_get_node(value);
 	tern_node *padbuttons = buttonmaps[0];
 	tern_node *mousebuttons = buttonmaps[1];
-	
+
 	if (!mousedef) {
 		warning("Binding for mouse %s is a scalar!\n", mousenum);
 		return;
@@ -867,7 +867,7 @@
 	padbuttons = tern_insert_int(padbuttons, ".z", BUTTON_Z);
 	padbuttons = tern_insert_int(padbuttons, ".start", BUTTON_START);
 	padbuttons = tern_insert_int(padbuttons, ".mode", BUTTON_MODE);
-	
+
 	tern_node *mousebuttons = tern_insert_int(NULL, ".left", MOUSE_LEFT);
 	mousebuttons = tern_insert_int(mousebuttons, ".middle", MOUSE_MIDDLE);
 	mousebuttons = tern_insert_int(mousebuttons, ".right", MOUSE_RIGHT);
@@ -1246,7 +1246,7 @@
 				input = 0;
 			}
 		} else {
-			
+
 			int16_t delta_x = port->device.mouse.latched_x - port->device.mouse.last_read_x;
 			int16_t delta_y = port->device.mouse.last_read_y - port->device.mouse.latched_y;
 			switch (port->device.mouse.tr_counter)