Mercurial > repos > blastem
diff io.c @ 1146:3e24de8d8073
Add support for SMS controllers
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 03 Jan 2017 21:18:52 -0800 |
parents | be3df2d8530a |
children | 6a4503fad67e |
line wrap: on
line diff
--- a/io.c Tue Jan 03 21:18:42 2017 -0800 +++ b/io.c Tue Jan 03 21:18:52 2017 -0800 @@ -25,6 +25,7 @@ #define MIN_POLL_INTERVAL 6840 const char * device_type_names[] = { + "SMS gamepad", "3-button gamepad", "6-button gamepad", "Mega Mouse", @@ -653,15 +654,15 @@ if (!strncmp(device_type, "gamepad", gamepad_len)) { if ( - (device_type[gamepad_len] != '3' && device_type[gamepad_len] != '6') + (device_type[gamepad_len] != '3' && device_type[gamepad_len] != '6' && device_type[gamepad_len] != '2') || device_type[gamepad_len+1] != '.' || device_type[gamepad_len+2] < '1' || device_type[gamepad_len+2] > '8' || device_type[gamepad_len+3] != 0 - ) - { + ) { warning("%s is not a valid gamepad type\n", device_type); - } else if (device_type[gamepad_len] == '3') - { + } else if (device_type[gamepad_len] == '3') { port->device_type = IO_GAMEPAD3; + } else if (device_type[gamepad_len] == '2') { + port->device_type = IO_GAMEPAD2; } else { port->device_type = IO_GAMEPAD6; } @@ -803,7 +804,7 @@ } } else #endif - if (ports[i].device_type == IO_GAMEPAD3 || ports[i].device_type == IO_GAMEPAD6) { + if (ports[i].device_type == IO_GAMEPAD3 || ports[i].device_type == IO_GAMEPAD6 || ports[i].device_type == IO_GAMEPAD2) { printf("IO port %s connected to gamepad #%d with type '%s'\n", io_name(i), ports[i].device.pad.gamepad_num + 1, device_type_names[ports[i].device_type]); } else { printf("IO port %s connected to device '%s'\n", io_name(i), device_type_names[ports[i].device_type]); @@ -821,7 +822,8 @@ for (int j = 0; j < 3; j++) { if ((ports[j].device_type == IO_GAMEPAD3 - || ports[j].device_type ==IO_GAMEPAD6) + || ports[j].device_type == IO_GAMEPAD6 + || ports[j].device_type == IO_GAMEPAD2) && ports[j].device.pad.gamepad_num == num ) { @@ -1364,6 +1366,9 @@ } switch (port->device_type) { + case IO_GAMEPAD2: + input = ~port->input[GAMEPAD_TH1]; + break; case IO_GAMEPAD3: { input = port->input[th ? GAMEPAD_TH1 : GAMEPAD_TH0];