Commit | Line | Data |
---|---|---|
4c08b9e7 | 1 | /* |
f3943713 | 2 | * (C) Gražvydas "notaz" Ignotas, 2011 |
4c08b9e7 | 3 | * |
4 | * This work is licensed under the terms of any of these licenses | |
5 | * (at your option): | |
6 | * - GNU GPL, version 2 or later. | |
7 | * - GNU LGPL, version 2.1 or later. | |
8 | * See the COPYING file in the top-level directory. | |
9 | */ | |
10 | ||
003cfc63 | 11 | #ifndef _WIN32 |
12 | #define CALLBACK | |
13 | #else | |
14 | #define WIN32_LEAN_AND_MEAN | |
15 | #include <windows.h> | |
16 | #endif | |
17 | ||
4c08b9e7 | 18 | #include "main.h" |
19 | ||
20 | unsigned char CurPad, CurByte, CurCmd, CmdLen; | |
21 | ||
22 | /* since this is not a proper plugin, so we'll hook emu internals in a hackish way like this */ | |
23 | extern void *PAD1_startPoll, *PAD1_poll; | |
24 | extern void *PAD2_startPoll, *PAD2_poll; | |
003cfc63 | 25 | extern unsigned char CALLBACK PAD1__startPoll(int pad); |
26 | extern unsigned char CALLBACK PAD2__startPoll(int pad); | |
27 | extern unsigned char CALLBACK PAD1__poll(unsigned char value); | |
28 | extern unsigned char CALLBACK PAD2__poll(unsigned char value); | |
4c08b9e7 | 29 | |
30 | static int old_controller_type1 = -1, old_controller_type2 = -1; | |
31 | ||
32 | #define select_pad(n) \ | |
33 | if (pad.controllerType != old_controller_type##n) \ | |
34 | { \ | |
35 | switch (pad.controllerType) \ | |
36 | { \ | |
37 | case PSE_PAD_TYPE_ANALOGPAD: \ | |
38 | PAD##n##_startPoll = PADstartPoll_pad; \ | |
39 | PAD##n##_poll = PADpoll_pad; \ | |
40 | pad_init(); \ | |
41 | break; \ | |
42 | case PSE_PAD_TYPE_GUNCON: \ | |
f3943713 S |
43 | //Removed for new Guncon functionality, may have been required for very old touchscreen support |
44 | //PAD##n##_startPoll = PADstartPoll_guncon; \ | |
45 | //PAD##n##_poll = PADpoll_guncon; \ | |
46 | //guncon_init(); \ | |
47 | //break; \ | |
e8d96071 | 48 | case PSE_PAD_TYPE_NEGCON: \ |
4c08b9e7 | 49 | case PSE_PAD_TYPE_GUN: \ |
50 | default: \ | |
51 | PAD##n##_startPoll = PAD##n##__startPoll; \ | |
52 | PAD##n##_poll = PAD##n##__poll; \ | |
53 | break; \ | |
54 | } \ | |
55 | } | |
56 | ||
e8d96071 | 57 | |
4c08b9e7 | 58 | void dfinput_activate(void) |
59 | { | |
f40e483e | 60 | #ifndef HAVE_LIBRETRO |
4c08b9e7 | 61 | PadDataS pad; |
62 | ||
73d32d69 | 63 | pad.portMultitap = -1; |
64 | pad.requestPadIndex = 0; | |
4c08b9e7 | 65 | PAD1_readPort1(&pad); |
66 | select_pad(1); | |
67 | ||
73d32d69 | 68 | pad.requestPadIndex = 1; |
4c08b9e7 | 69 | PAD2_readPort2(&pad); |
70 | select_pad(2); | |
f40e483e | 71 | #endif |
4c08b9e7 | 72 | } |