annotate src/joystick/mint/SDL_sysjoystick.c @ 4383:daf9e6037596 SDL-1.2

Gregory Smith Another one for the "How did this ever work?" file: when DX5_HandleMessage is called with WM_ACTIVATEAPP, it goes past the end of the 2-element SDL_DIdev array and if there doesn't happen to be a 0 in the memory next to it, crashes. Patch against SVN attached.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 15 Nov 2009 17:21:24 +0000
parents 3370c734fd49
children
rev   line source
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1 /*
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
4159
a1b03ba2fcd0 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 4156
diff changeset
3 Copyright (C) 1997-2009 Sam Lantinga
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
4
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1079
diff changeset
6 modify it under the terms of the GNU Lesser General Public
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1079
diff changeset
8 version 2.1 of the License, or (at your option) any later version.
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
9
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1079
diff changeset
13 Lesser General Public License for more details.
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
14
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1079
diff changeset
15 You should have received a copy of the GNU Lesser General Public
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1079
diff changeset
16 License along with this library; if not, write to the Free Software
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1079
diff changeset
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
18
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
19 Sam Lantinga
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
20 slouken@libsdl.org
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
21 */
1402
d910939febfa Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents: 1361
diff changeset
22 #include "SDL_config.h"
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
23
1635
92947e3a18db Make sure code is only compiled if the appropriate subsystem is enabled
Sam Lantinga <slouken@libsdl.org>
parents: 1412
diff changeset
24 #ifdef SDL_JOYSTICK_MINT
92947e3a18db Make sure code is only compiled if the appropriate subsystem is enabled
Sam Lantinga <slouken@libsdl.org>
parents: 1412
diff changeset
25
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
26 /*
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
27 * Atari Joystick/Joypad drivers
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
28 *
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
29 * Patrice Mandin
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
30 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
31
557
0ce5a68278fd Updated Atari port for new system headers (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents: 507
diff changeset
32 #include <mint/cookie.h>
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
33 #include <mint/osbind.h>
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
34
1350
adc8ff3c9597 Fixes for new SDL embedded libc stuff
Patrice Mandin <patmandin@gmail.com>
parents: 1338
diff changeset
35 #include "SDL_events.h"
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
36 #include "../SDL_sysjoystick.h"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
37 #include "../SDL_joystick_c.h"
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
38
1412
a8181c4040b8 Fixed include files
Patrice Mandin <patmandin@gmail.com>
parents: 1402
diff changeset
39 #include "../../video/ataricommon/SDL_ikbdinterrupt_s.h"
a8181c4040b8 Fixed include files
Patrice Mandin <patmandin@gmail.com>
parents: 1402
diff changeset
40 #include "../../video/ataricommon/SDL_xbiosevents_c.h"
a8181c4040b8 Fixed include files
Patrice Mandin <patmandin@gmail.com>
parents: 1402
diff changeset
41 #include "../../video/ataricommon/SDL_xbiosinterrupt_s.h"
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
42
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
43 /*--- Const ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
44
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
45 /* We can have:
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
46 1 joystick on IKBD port 1, read via hardware I/O
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
47 or same joystick on IKBD port 1, read via xbios
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
48 1 joypad on port A (up to 4 with teamtap)
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
49 or 2 joysticks on joypad port A
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
50 or 1 analog paddle on joypad port A
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
51 or 1 lightpen on joypad port A
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
52 1 joypad on port B (up to 4 with teamtap)
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
53 or 2 joysticks on joypad port B
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
54 or 1 analog paddle on joypad port B
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
55 2 joysticks on parallel port
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
56 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
57
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
58 enum {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
59 IKBD_JOY1=0,
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
60 XBIOS_JOY1,
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
61 PORTA_PAD0,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
62 PORTA_PAD1,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
63 PORTA_PAD2,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
64 PORTA_PAD3,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
65 PORTB_PAD0,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
66 PORTB_PAD1,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
67 PORTB_PAD2,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
68 PORTB_PAD3,
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
69 PORTA_JOY0,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
70 PORTA_JOY1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
71 PORTB_JOY0,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
72 PORTB_JOY1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
73 PORTA_LP,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
74 PORTA_ANPAD,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
75 PORTB_ANPAD,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
76 #if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
77 PARA_JOY0,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
78 PARA_JOY1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
79 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
80 MAX_JOYSTICKS
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
81 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
82
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
83 enum {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
84 MCH_ST=0,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
85 MCH_STE,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
86 MCH_TT,
1054
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
87 MCH_F30,
1079
39b5606fa543 Forgot enumeration value for Atari clones
Patrice Mandin <patmandin@gmail.com>
parents: 1054
diff changeset
88 MCH_CLONE,
1054
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
89 MCH_ARANYM
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
90 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
91
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
92 /* Joypad buttons
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
93 * Procontroller note:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
94 * L,R are connected to 4,6
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
95 * X,Y,Z are connected to 7,8,9
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
96 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
97
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
98 enum {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
99 JP_UP=0, JP_DOWN, JP_LEFT, JP_RIGHT,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
100 JP_KPMULT, JP_KP7, JP_KP4, JP_KP1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
101 JP_KP0, JP_KP8, JP_KP5, JP_KP2,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
102 JP_KPNUM, JP_KP9, JP_KP6, JP_KP3,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
103 JP_PAUSE, JP_FIRE0, JP_UNDEF0, JP_FIRE1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
104 JP_UNDEF1, JP_FIRE2, JP_UNDEF2, JP_OPTION
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
105 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
106
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
107 #define JP_NUM_BUTTONS 17
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
108
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
109 #define PORT_JS_RIGHT (1<<0)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
110 #define PORT_JS_LEFT (1<<1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
111 #define PORT_JS_DOWN (1<<2)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
112 #define PORT_JS_UP (1<<3)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
113 #define PORT_JS_FIRE (1<<4)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
114
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
115 enum {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
116 TEAMTAP_MAYBE=0,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
117 TEAMTAP_YES,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
118 TEAMTAP_NO
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
119 };
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
120
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
121 /* Teamtap detection values */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
122 static const Uint32 teamtap_ghosts[20][4]={
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
123 {1<<JP_UP, /* for this event on joypad 0, port X */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
124 (1<<JP_UP)|(1<<JP_KP0), /* we get this on joypad 1 */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
125 (1<<JP_UP)|(1<<JP_KPNUM)|(1<<JP_KP0), /* this on joypad 2 */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
126 (1<<JP_KPMULT)|(1<<JP_KP0)}, /* this on joypad 3 */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
127 {1<<JP_DOWN,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
128 (1<<JP_DOWN)|(1<<JP_KP8),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
129 (1<<JP_DOWN)|(1<<JP_KP9)|(1<<JP_KP8),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
130 (1<<JP_KP7)|(1<<JP_KP8)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
131 {1<<JP_LEFT,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
132 (1<<JP_LEFT)|(1<<JP_KP5),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
133 (1<<JP_LEFT)|(1<<JP_KP6)|(1<<JP_KP5),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
134 (1<<JP_KP4)|(1<<JP_KP5)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
135 {1<<JP_RIGHT,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
136 (1<<JP_RIGHT)|(1<<JP_KP2),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
137 (1<<JP_RIGHT)|(1<<JP_KP3)|(1<<JP_KP2),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
138 (1<<JP_KP1)|(1<<JP_KP2)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
139 {1<<JP_OPTION,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
140 (1<<JP_OPTION)|(1<<JP_FIRE1)|(1<<JP_FIRE2),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
141 (1<<JP_FIRE0)|(1<<JP_FIRE1)|(1<<JP_FIRE2),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
142 0},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
143 {1<<JP_FIRE0,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
144 (1<<JP_FIRE2)|(1<<JP_FIRE0),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
145 (1<<JP_FIRE0)|(1<<JP_OPTION)|(1<<JP_FIRE2),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
146 (1<<JP_FIRE1)|(1<<JP_FIRE2)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
147 {1<<JP_FIRE1,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
148 (1<<JP_FIRE0),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
149 (1<<JP_OPTION)|(1<<JP_FIRE0)|(1<<JP_FIRE1),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
150 (1<<JP_FIRE0)|(1<<JP_FIRE2)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
151 {1<<JP_FIRE2,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
152 (1<<JP_OPTION)|(1<<JP_FIRE0)|(1<<JP_FIRE1)|(1<<JP_FIRE2),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
153 (1<<JP_OPTION),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
154 (1<<JP_FIRE0)|(1<<JP_FIRE1)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
155 {1<<JP_KP1,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
156 (1<<JP_RIGHT)|(1<<JP_KP1),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
157 (1<<JP_RIGHT)|(1<<JP_KP1)|(1<<JP_KP3),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
158 (1<<JP_RIGHT)|(1<<JP_KP2)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
159 {1<<JP_KP2,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
160 (1<<JP_RIGHT)|(1<<JP_KP1)|(1<<JP_KP2)|(1<<JP_KP3),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
161 (1<<JP_KP3),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
162 (1<<JP_RIGHT)|(1<<JP_KP1)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
163 {1<<JP_KP3,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
164 (1<<JP_RIGHT)|(1<<JP_KP1)|(1<<JP_KP2)|(1<<JP_KP3),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
165 (1<<JP_RIGHT)|(1<<JP_KP1)|(1<<JP_KP2),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
166 0},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
167 {1<<JP_KP4,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
168 (1<<JP_LEFT)|(1<<JP_KP4),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
169 (1<<JP_LEFT)|(1<<JP_KP4)|(1<<JP_KP6),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
170 (1<<JP_LEFT)|(1<<JP_KP5)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
171 {1<<JP_KP5,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
172 (1<<JP_LEFT)|(1<<JP_KP4)|(1<<JP_KP5)|(1<<JP_KP6),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
173 (1<<JP_KP6),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
174 (1<<JP_LEFT)|(1<<JP_KP4)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
175 {1<<JP_KP6,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
176 (1<<JP_LEFT)|(1<<JP_KP4)|(1<<JP_KP5)|(1<<JP_KP6),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
177 (1<<JP_LEFT)|(1<<JP_KP4)|(1<<JP_KP5),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
178 0},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
179 {1<<JP_KP7,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
180 (1<<JP_DOWN)|(1<<JP_KP7),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
181 (1<<JP_DOWN)|(1<<JP_KP7)|(1<<JP_KP9),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
182 (1<<JP_DOWN)|(1<<JP_KP8)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
183 {1<<JP_KP8,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
184 (1<<JP_DOWN)|(1<<JP_KP7)|(1<<JP_KP8)|(1<<JP_KP9),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
185 (1<<JP_KP9),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
186 (1<<JP_DOWN)|(1<<JP_KP7)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
187 {1<<JP_KP9,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
188 (1<<JP_DOWN)|(1<<JP_KP7)|(1<<JP_KP8)|(1<<JP_KP9),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
189 (1<<JP_DOWN)|(1<<JP_KP7)|(1<<JP_KP8),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
190 0},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
191 {1<<JP_KPMULT,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
192 (1<<JP_UP)|(1<<JP_KPMULT),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
193 (1<<JP_UP)|(1<<JP_KPNUM),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
194 (1<<JP_UP)|(1<<JP_KP0)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
195 {1<<JP_KP0,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
196 (1<<JP_UP)|(1<<JP_KPNUM)|(1<<JP_KPMULT)|(1<<JP_KP0),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
197 1<<JP_KPNUM,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
198 (1<<JP_UP)|(1<<JP_KPMULT)},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
199 {1<<JP_KPNUM,
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
200 (1<<JP_UP)|(1<<JP_KPNUM)|(1<<JP_KPMULT)|(1<<JP_KP0),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
201 (1<<JP_UP)|(1<<JP_KPMULT)|(1<<JP_KP0),
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
202 0},
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
203 };
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
204
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
205 /*--- Types ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
206
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
207 typedef struct {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
208 SDL_bool enabled;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
209 unsigned char *name;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
210 Uint32 prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
211 } atarijoy_t;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
212
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
213 /*--- Variables ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
214
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
215 static atarijoy_t atarijoysticks[MAX_JOYSTICKS]={
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
216 {SDL_FALSE,"IKBD joystick port 1",0},
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
217 {SDL_FALSE,"Xbios joystick port 1",0},
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
218 {SDL_FALSE,"Joypad 0 port A",0},
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
219 {SDL_FALSE,"Joypad 1 port A",0},
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
220 {SDL_FALSE,"Joypad 2 port A",0},
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
221 {SDL_FALSE,"Joypad 3 port A",0},
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
222 {SDL_FALSE,"Joypad 0 port B",0},
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
223 {SDL_FALSE,"Joypad 1 port B",0},
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
224 {SDL_FALSE,"Joypad 2 port B",0},
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
225 {SDL_FALSE,"Joypad 3 port B",0},
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
226 {SDL_FALSE,"Joystick 0 port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
227 {SDL_FALSE,"Joystick 1 port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
228 {SDL_FALSE,"Joystick 0 port B",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
229 {SDL_FALSE,"Joystick 1 port B",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
230 {SDL_FALSE,"Lightpen port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
231 {SDL_FALSE,"Analog paddle port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
232 {SDL_FALSE,"Analog paddle port B",0}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
233 #if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
234 ,{SDL_FALSE,"Joystick 0 parallel port",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
235 {SDL_FALSE,"Joystick 1 parallel port",0}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
236 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
237 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
238
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
239 static const int jp_buttons[JP_NUM_BUTTONS]={
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
240 JP_FIRE0, JP_FIRE1, JP_FIRE2, JP_PAUSE,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
241 JP_OPTION, JP_KPMULT, JP_KPNUM, JP_KP0,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
242 JP_KP1, JP_KP2, JP_KP3, JP_KP4,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
243 JP_KP5, JP_KP6, JP_KP7, JP_KP8,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
244 JP_KP9
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
245 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
246
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
247 static SDL_bool joypad_ports_enabled=SDL_FALSE;
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
248 static int has_teamtap[2]={TEAMTAP_MAYBE,TEAMTAP_MAYBE};
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
249
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
250 /* Updated joypad ports */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
251 static Uint16 jp_paddles[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
252 static Uint16 jp_lightpens[2];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
253 static Uint16 jp_directions;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
254 static Uint16 jp_fires;
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
255 static Uint32 jp_joypads[8];
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
256
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
257 /*--- Functions prototypes ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
258
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
259 static int GetEnabledAtariJoystick(int index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
260 static void UpdateJoypads(void);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
261
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
262 /*--- Functions ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
263
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
264 int SDL_SYS_JoystickInit(void)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
265 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
266 int i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
267 unsigned long cookie_mch;
1336
3692456e7b0f Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
268 const char *envr=SDL_getenv("SDL_JOYSTICK_ATARI");
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
269
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
270 #define TEST_JOY_ENABLED(env,idstring,num) \
1336
3692456e7b0f Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
271 if (SDL_strstr(env,idstring"-off")) { \
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
272 atarijoysticks[num].enabled=SDL_FALSE; \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
273 } \
1336
3692456e7b0f Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
274 if (SDL_strstr(env,idstring"-on")) { \
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
275 atarijoysticks[num].enabled=SDL_TRUE; \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
276 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
277
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
278 /* Cookie _MCH present ? if not, assume ST machine */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
279 if (Getcookie(C__MCH, &cookie_mch) != C_FOUND) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
280 cookie_mch = MCH_ST << 16;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
281 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
282
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
283 /* Enable some default joysticks */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
284 if ((cookie_mch == MCH_ST<<16) || ((cookie_mch>>16) == MCH_STE) ||
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
285 (cookie_mch == MCH_TT<<16) || (cookie_mch == MCH_F30<<16) ||
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
286 (cookie_mch == MCH_ARANYM<<16))
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
287 {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
288 atarijoysticks[IKBD_JOY1].enabled=(SDL_AtariIkbd_enabled!=0);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
289 }
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
290 if ((cookie_mch == MCH_STE<<16) || (cookie_mch == MCH_F30<<16) ||
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
291 (cookie_mch == MCH_ARANYM<<16))
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
292 {
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
293 atarijoysticks[PORTA_PAD0].enabled =
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
294 atarijoysticks[PORTA_PAD1].enabled =
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
295 atarijoysticks[PORTA_PAD2].enabled =
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
296 atarijoysticks[PORTA_PAD3].enabled =
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
297 atarijoysticks[PORTB_PAD0].enabled =
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
298 atarijoysticks[PORTB_PAD1].enabled =
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
299 atarijoysticks[PORTB_PAD2].enabled =
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
300 atarijoysticks[PORTB_PAD3].enabled = SDL_TRUE;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
301 }
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
302 if (!atarijoysticks[IKBD_JOY1].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
303 atarijoysticks[XBIOS_JOY1].enabled=(SDL_AtariXbios_enabled!=0);
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
304 }
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
305
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
306 /* Read environment for joysticks to enable */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
307 if (envr) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
308 /* IKBD on any Atari, maybe clones */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
309 if ((cookie_mch == MCH_ST<<16) || ((cookie_mch>>16) == MCH_STE) ||
1054
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
310 (cookie_mch == MCH_TT<<16) || (cookie_mch == MCH_F30<<16) ||
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
311 (cookie_mch == MCH_ARANYM<<16)) {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
312 if (SDL_AtariIkbd_enabled!=0) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
313 TEST_JOY_ENABLED(envr, "ikbd-joy1", IKBD_JOY1);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
314 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
315 }
4156
de46a1bfcbdb Aranym now has Joypad emulation. Also mask bits for joypad state, for bits only used for buttons, to avoid generating events when dummy bits are set
Patrice Mandin <patmandin@gmail.com>
parents: 3850
diff changeset
316 /* Joypads ports on STE, Falcon and maybe others */
de46a1bfcbdb Aranym now has Joypad emulation. Also mask bits for joypad state, for bits only used for buttons, to avoid generating events when dummy bits are set
Patrice Mandin <patmandin@gmail.com>
parents: 3850
diff changeset
317 if ((cookie_mch == MCH_STE<<16) || (cookie_mch == MCH_F30<<16) ||
de46a1bfcbdb Aranym now has Joypad emulation. Also mask bits for joypad state, for bits only used for buttons, to avoid generating events when dummy bits are set
Patrice Mandin <patmandin@gmail.com>
parents: 3850
diff changeset
318 (cookie_mch == MCH_ARANYM<<16)) {
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
319 TEST_JOY_ENABLED(envr, "porta-pad", PORTA_PAD0);
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
320 if (!atarijoysticks[PORTA_PAD0].enabled) {
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
321 TEST_JOY_ENABLED(envr, "porta-joy0", PORTA_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
322 TEST_JOY_ENABLED(envr, "porta-joy1", PORTA_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
323 if (!(atarijoysticks[PORTA_JOY0].enabled) && !(atarijoysticks[PORTA_JOY1].enabled)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
324 TEST_JOY_ENABLED(envr, "porta-lp", PORTA_LP);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
325 if (!atarijoysticks[PORTA_LP].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
326 TEST_JOY_ENABLED(envr, "porta-anpad", PORTA_ANPAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
327 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
328 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
329 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
330
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
331 TEST_JOY_ENABLED(envr, "portb-pad", PORTB_PAD0);
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
332 if (!atarijoysticks[PORTB_PAD0].enabled) {
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
333 TEST_JOY_ENABLED(envr, "portb-joy0", PORTB_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
334 TEST_JOY_ENABLED(envr, "portb-joy1", PORTB_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
335 if (!(atarijoysticks[PORTB_JOY0].enabled) && !(atarijoysticks[PORTB_JOY1].enabled)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
336 TEST_JOY_ENABLED(envr, "portb-anpad", PORTB_ANPAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
337 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
338 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
339 }
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
340
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
341 if (!atarijoysticks[IKBD_JOY1].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
342 if (SDL_AtariXbios_enabled!=0) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
343 TEST_JOY_ENABLED(envr, "xbios-joy1", XBIOS_JOY1);
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
344 }
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
345 }
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
346 #if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
347 /* Parallel port on any Atari, maybe clones */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
348 if ((cookie_mch == MCH_ST<<16) || ((cookie_mch>>16) == MCH_STE) ||
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
349 (cookie_mch == MCH_TT<<16) || (cookie_mch == MCH_F30<<16)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
350 TEST_JOY_ENABLED(envr, "para-joy0", PARA_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
351 TEST_JOY_ENABLED(envr, "para-joy1", PARA_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
352 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
353 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
354 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
355
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
356 /* Need to update joypad ports ? */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
357 joypad_ports_enabled=SDL_FALSE;
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
358 for (i=PORTA_PAD0;i<=PORTB_ANPAD;i++) {
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
359 if (atarijoysticks[i].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
360 joypad_ports_enabled=SDL_TRUE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
361 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
362 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
363 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
364
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
365 SDL_numjoysticks = 0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
366 for (i=0;i<MAX_JOYSTICKS;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
367 if (atarijoysticks[i].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
368 ++SDL_numjoysticks;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
369 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
370 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
371
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
372 return(SDL_numjoysticks);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
373 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
374
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
375 static int GetEnabledAtariJoystick(int index)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
376 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
377 int i,j;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
378
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
379 /* Return the nth'index' enabled atari joystick */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
380 j=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
381 for (i=0;i<MAX_JOYSTICKS;i++) {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
382 if (!atarijoysticks[i].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
383 continue;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
384 }
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
385
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
386 if (j==index) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
387 break;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
388 }
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
389
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
390 ++j;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
391 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
392 if (i==MAX_JOYSTICKS)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
393 return -1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
394
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
395 return i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
396 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
397
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
398 const char *SDL_SYS_JoystickName(int index)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
399 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
400 int numjoystick;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
401
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
402 numjoystick=GetEnabledAtariJoystick(index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
403 if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
404 return NULL;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
405
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
406 return(atarijoysticks[numjoystick].name);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
407 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
408
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
409 int SDL_SYS_JoystickOpen(SDL_Joystick *joystick)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
410 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
411 int numjoystick;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
412
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
413 numjoystick=GetEnabledAtariJoystick(joystick->index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
414 if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
415 return -1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
416
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
417 joystick->naxes=0;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
418 joystick->nhats=0;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
419 joystick->nballs=0;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
420
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
421 switch(numjoystick) {
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
422 case PORTA_PAD0:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
423 case PORTA_PAD1:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
424 case PORTA_PAD2:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
425 case PORTA_PAD3:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
426 case PORTB_PAD0:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
427 case PORTB_PAD1:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
428 case PORTB_PAD2:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
429 case PORTB_PAD3:
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
430 joystick->nhats=1;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
431 joystick->nbuttons=JP_NUM_BUTTONS;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
432 break;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
433 case PORTA_LP:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
434 case PORTA_ANPAD:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
435 case PORTB_ANPAD:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
436 joystick->naxes=2;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
437 joystick->nbuttons=2;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
438 break;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
439 default:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
440 joystick->nhats=1;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
441 joystick->nbuttons=1;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
442 break;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
443 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
444
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
445 return(0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
446 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
447
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
448 /* Detect Teamtap using ghost events */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
449 static void detect_teamtap(int num_port)
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
450 {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
451 int i,j;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
452
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
453 /* Check if joypad 1,2,3 triggered but not 0 */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
454 for (i=1; i<4; i++) {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
455 if (jp_joypads[num_port*4+i] && (jp_joypads[num_port*4]==0)) {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
456 has_teamtap[num_port] = TEAMTAP_YES;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
457 return;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
458 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
459 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
460
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
461 /* Check if joypad 0 on a given port triggered ghost events for
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
462 * other joypads
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
463 */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
464 for (i=0; i<20; i++) {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
465 int with_teamtap=1;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
466
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
467 if (jp_joypads[num_port*4]!=teamtap_ghosts[i][0])
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
468 continue;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
469
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
470 /* If any button on first joypad pressed, check other pads */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
471 for (j=1; j<4; j++) {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
472 if ((jp_joypads[num_port*4+j] & teamtap_ghosts[i][j])
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
473 ==teamtap_ghosts[i][j])
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
474 {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
475 with_teamtap = 0;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
476 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
477 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
478
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
479 has_teamtap[num_port] = (with_teamtap ? TEAMTAP_YES : TEAMTAP_NO);
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
480 break;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
481 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
482 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
483
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
484 void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
485 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
486 int numjoystick;
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
487 Uint8 hatstate;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
488 Uint32 curstate,prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
489
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
490 numjoystick=GetEnabledAtariJoystick(joystick->index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
491 if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
492 return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
493
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
494 prevstate = atarijoysticks[numjoystick].prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
495
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
496 if (joypad_ports_enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
497 Supexec(UpdateJoypads);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
498 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
499
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
500 switch (numjoystick) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
501 case IKBD_JOY1:
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
502 case XBIOS_JOY1:
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
503 {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
504 curstate = 0;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
505
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
506 if (numjoystick==IKBD_JOY1) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
507 curstate = SDL_AtariIkbd_joystick & 0xff;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
508 }
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
509 if (numjoystick==XBIOS_JOY1) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
510 curstate = SDL_AtariXbios_joystick & 0xff;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
511 }
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
512
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
513 if (curstate != prevstate) {
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
514 hatstate = SDL_HAT_CENTERED;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
515 if (curstate & IKBD_JOY_LEFT) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
516 hatstate |= SDL_HAT_LEFT;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
517 }
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
518 if (curstate & IKBD_JOY_RIGHT) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
519 hatstate |= SDL_HAT_RIGHT;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
520 }
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
521 if (curstate & IKBD_JOY_UP) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
522 hatstate |= SDL_HAT_UP;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
523 }
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
524 if (curstate & IKBD_JOY_DOWN) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
525 hatstate |= SDL_HAT_DOWN;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
526 }
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
527 SDL_PrivateJoystickHat(joystick, 0, hatstate);
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
528
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
529 /* Button */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
530 if ((curstate & IKBD_JOY_FIRE) && !(prevstate & IKBD_JOY_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
531 SDL_PrivateJoystickButton(joystick,0,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
532 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
533 if (!(curstate & IKBD_JOY_FIRE) && (prevstate & IKBD_JOY_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
534 SDL_PrivateJoystickButton(joystick,0,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
535 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
536 }
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
537 atarijoysticks[numjoystick].prevstate = curstate;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
538 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
539 break;
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
540 case PORTA_PAD0:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
541 case PORTA_PAD1:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
542 case PORTA_PAD2:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
543 case PORTA_PAD3:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
544 case PORTB_PAD0:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
545 case PORTB_PAD1:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
546 case PORTB_PAD2:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
547 case PORTB_PAD3:
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
548 {
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
549 int numjoypad,i,numport;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
550
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
551 numjoypad = numport = 0;
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
552 switch(numjoystick) {
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
553 case PORTA_PAD0:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
554 numjoypad = 0; break;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
555 case PORTA_PAD1:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
556 numjoypad = 1; break;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
557 case PORTA_PAD2:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
558 numjoypad = 2; break;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
559 case PORTA_PAD3:
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
560 numjoypad = 3; break;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
561 case PORTB_PAD0:
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
562 numjoypad = 4; numport = 1; break;
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
563 case PORTB_PAD1:
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
564 numjoypad = 5; numport = 1; break;
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
565 case PORTB_PAD2:
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
566 numjoypad = 6; numport = 1; break;
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
567 case PORTB_PAD3:
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
568 numjoypad = 7; numport = 1; break;
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
569 }
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
570
4174
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
571 jp_joypads[numjoypad] &= 0xabffff;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
572
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
573 if (has_teamtap[numport]==TEAMTAP_MAYBE) {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
574 detect_teamtap(numport);
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
575 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
576 /* No events for PORTX_PAD[1,2,3] if no teamtap detected */
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
577 if (has_teamtap[numport] == TEAMTAP_NO) {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
578 if ((numjoypad & 3)!=0) {
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
579 return;
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
580 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
581 }
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
582
3370c734fd49 Add Teamtap autodetection, to avoid generating ghost events if it is not present
Patrice Mandin <patmandin@gmail.com>
parents: 4159
diff changeset
583 curstate=jp_joypads[numjoypad];
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
584 if (curstate!=prevstate) {
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
585 hatstate = SDL_HAT_CENTERED;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
586 if (curstate & (1<<JP_LEFT)) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
587 hatstate |= SDL_HAT_LEFT;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
588 }
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
589 if (curstate & (1<<JP_RIGHT)) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
590 hatstate |= SDL_HAT_RIGHT;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
591 }
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
592 if (curstate & (1<<JP_UP)) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
593 hatstate |= SDL_HAT_UP;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
594 }
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
595 if (curstate & (1<<JP_DOWN)) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
596 hatstate |= SDL_HAT_DOWN;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
597 }
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
598 SDL_PrivateJoystickHat(joystick, 0, hatstate);
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
599
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
600 /* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
601 for (i=0;i<JP_NUM_BUTTONS;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
602 int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
603
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
604 button=1<<jp_buttons[i];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
605
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
606 if ((curstate & button) && !(prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
607 SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
608 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
609 if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
610 SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
611 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
612 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
613 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
614 atarijoysticks[numjoystick].prevstate = curstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
615 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
616 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
617 case PORTA_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
618 case PORTA_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
619 case PORTB_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
620 case PORTB_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
621 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
622 int fire_shift=0,dir_shift=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
623
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
624 if (numjoystick==PORTA_JOY0) { fire_shift=0; dir_shift=0; }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
625 if (numjoystick==PORTA_JOY1) { fire_shift=1; dir_shift=4; }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
626 if (numjoystick==PORTB_JOY0) { fire_shift=2; dir_shift=8; }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
627 if (numjoystick==PORTB_JOY1) { fire_shift=3; dir_shift=12; }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
628
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
629 curstate = (jp_directions>>dir_shift) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
630 curstate |= ((jp_fires>>fire_shift) & 1)<<4;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
631
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
632 if (curstate != prevstate) {
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
633 hatstate = SDL_HAT_CENTERED;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
634 if (curstate & PORT_JS_LEFT) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
635 hatstate |= SDL_HAT_LEFT;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
636 }
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
637 if (curstate & PORT_JS_RIGHT) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
638 hatstate |= SDL_HAT_RIGHT;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
639 }
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
640 if (curstate & PORT_JS_UP) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
641 hatstate |= SDL_HAT_UP;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
642 }
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
643 if (curstate & PORT_JS_DOWN) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
644 hatstate |= SDL_HAT_DOWN;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
645 }
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
646 SDL_PrivateJoystickHat(joystick, 0, hatstate);
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
647
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
648 /* Button */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
649 if ((curstate & PORT_JS_FIRE) && !(prevstate & PORT_JS_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
650 SDL_PrivateJoystickButton(joystick,0,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
651 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
652 if (!(curstate & PORT_JS_FIRE) && (prevstate & PORT_JS_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
653 SDL_PrivateJoystickButton(joystick,0,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
654 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
655 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
656 atarijoysticks[numjoystick].prevstate = curstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
657 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
658 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
659 case PORTA_LP:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
660 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
661 int i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
662
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
663 curstate = jp_lightpens[0]>>1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
664 curstate |= (jp_lightpens[1]>>1)<<15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
665 curstate |= (jp_fires & 3)<<30;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
666
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
667 if (curstate != prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
668 /* X axis */
507
7853b6af5957 Atari joystick fixes contributed by Patrice Mandin
Sam Lantinga <slouken@libsdl.org>
parents: 305
diff changeset
669 SDL_PrivateJoystickAxis(joystick,0,jp_lightpens[0] ^ 0x8000);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
670 /* Y axis */
507
7853b6af5957 Atari joystick fixes contributed by Patrice Mandin
Sam Lantinga <slouken@libsdl.org>
parents: 305
diff changeset
671 SDL_PrivateJoystickAxis(joystick,1,jp_lightpens[1] ^ 0x8000);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
672 /* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
673 for (i=0;i<2;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
674 int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
675
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
676 button=1<<(30+i);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
677
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
678 if ((curstate & button) && !(prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
679 SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
680 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
681 if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
682 SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
683 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
684 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
685 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
686 atarijoysticks[numjoystick].prevstate = curstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
687 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
688 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
689 case PORTA_ANPAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
690 case PORTB_ANPAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
691 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
692 int numpaddle, i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
693
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
694 numpaddle=0<<1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
695 if (numjoystick==PORTB_ANPAD) numpaddle=1<<1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
696
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
697 curstate = jp_paddles[numpaddle]>>1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
698 curstate |= (jp_paddles[numpaddle+1]>>1)<<15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
699 curstate |= ((jp_fires>>numpaddle) & 3)<<30;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
700
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
701 if (curstate != prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
702 /* X axis */
507
7853b6af5957 Atari joystick fixes contributed by Patrice Mandin
Sam Lantinga <slouken@libsdl.org>
parents: 305
diff changeset
703 SDL_PrivateJoystickAxis(joystick,0,jp_paddles[numpaddle] ^ 0x8000);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
704 /* Y axis */
507
7853b6af5957 Atari joystick fixes contributed by Patrice Mandin
Sam Lantinga <slouken@libsdl.org>
parents: 305
diff changeset
705 SDL_PrivateJoystickAxis(joystick,1,jp_paddles[numpaddle+1] ^ 0x8000);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
706 /* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
707 for (i=0;i<2;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
708 int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
709
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
710 button=1<<(30+i);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
711
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
712 if ((curstate & button) && !(prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
713 SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
714 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
715 if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
716 SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
717 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
718 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
719 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
720 atarijoysticks[numjoystick].prevstate = curstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
721 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
722 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
723 #if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
724 case PARA_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
725 case PARA_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
726 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
727 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
728 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
729
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
730 return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
731 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
732
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
733 void SDL_SYS_JoystickClose(SDL_Joystick *joystick)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
734 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
735 return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
736 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
737
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
738 void SDL_SYS_JoystickQuit(void)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
739 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
740 SDL_numjoysticks=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
741 return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
742 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
743
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
744 /*--- Joypad I/O read/write interface ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
745
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
746 #define JOYPAD_IO_BASE (0xffff9200)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
747 struct JOYPAD_IO_S {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
748 Uint16 fires;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
749 Uint16 directions;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
750 Uint16 dummy1[6];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
751 Uint16 paddles[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
752 Uint16 dummy2[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
753 Uint16 lightpens[2];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
754 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
755 #define JOYPAD_IO ((*(volatile struct JOYPAD_IO_S *)JOYPAD_IO_BASE))
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
756
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
757 static const Uint16 joypad_masks[8*4]={
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
758 0xfffe, 0xfffd, 0xfffb, 0xfff7,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
759 0xfff0, 0xfff1, 0xfff2, 0xfff3,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
760 0xfff4, 0xfff5, 0xfff6, 0xfff8,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
761 0xfff9, 0xfffa, 0xfffc, 0xffff,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
762 0xffef, 0xffdf, 0xffbf, 0xff7f,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
763 0xff0f, 0xff1f, 0xff2f, 0xff3f,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
764 0xff4f, 0xff5f, 0xff6f, 0xff8f,
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
765 0xff9f, 0xffaf, 0xffcf, 0xffff
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
766 };
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
767
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
768 static void UpdateJoypads(void)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
769 {
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
770 Uint16 tmp, i, j;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
771 Uint32 cur_fire, cur_dir;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
772
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
773 /*--- This function is called in supervisor mode ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
774
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
775 /* Update joysticks */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
776 jp_fires = (~(JOYPAD_IO.fires)) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
777 jp_directions = (~(JOYPAD_IO.directions));
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
778
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
779 /* Update lightpen */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
780 tmp = JOYPAD_IO.lightpens[0] & 1023;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
781 jp_lightpens[0] = (tmp<<6) | (tmp>>4);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
782 tmp = JOYPAD_IO.lightpens[1] & 1023;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
783 jp_lightpens[1] = (tmp<<6) | (tmp>>4);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
784
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
785 /* Update paddles */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
786 tmp = (JOYPAD_IO.paddles[0] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
787 jp_paddles[0] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
788 tmp = (JOYPAD_IO.paddles[1] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
789 jp_paddles[1] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
790 tmp = (JOYPAD_IO.paddles[2] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
791 jp_paddles[2] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
792 tmp = (JOYPAD_IO.paddles[3] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
793 jp_paddles[3] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
794
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
795 /* Update joypads on teamtap port A */
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
796 for (i=0; i<4; i++) {
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
797 jp_joypads[i] = 0;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
798 for (j=0; j<4; j++) {
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
799 JOYPAD_IO.directions = joypad_masks[(i*4)+j];
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
800
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
801 cur_fire = (~(JOYPAD_IO.fires) & 3)<<16;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
802 cur_dir = (~(JOYPAD_IO.directions)>>8) & 15;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
803
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
804 jp_joypads[i] |= cur_fire<<(j*2);
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
805 jp_joypads[i] |= cur_dir<<(j*4);
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
806 }
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
807 }
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
808
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
809 /* Update joypads on teamtap port B */
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
810 for (i=4; i<8; i++) {
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
811 jp_joypads[i] = 0;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
812 for (j=0; j<4; j++) {
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
813 JOYPAD_IO.directions = joypad_masks[(i*4)+j];
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
814
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
815 cur_fire = (~(JOYPAD_IO.fires) & 0xc)<<14;
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
816 cur_dir = (~(JOYPAD_IO.directions)>>12) & 15;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
817
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
818 jp_joypads[i] |= cur_fire<<(j*2);
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
819 jp_joypads[i] |= cur_dir<<(j*4);
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
820 }
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
821 }
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
822
3850
28db418c7573 Add teamtap support (4 joypads adapter on 1 port)
Patrice Mandin <patmandin@gmail.com>
parents: 1635
diff changeset
823 JOYPAD_IO.directions=0xffff;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
824 }
1635
92947e3a18db Make sure code is only compiled if the appropriate subsystem is enabled
Sam Lantinga <slouken@libsdl.org>
parents: 1412
diff changeset
825
92947e3a18db Make sure code is only compiled if the appropriate subsystem is enabled
Sam Lantinga <slouken@libsdl.org>
parents: 1412
diff changeset
826 #endif /* SDL_JOYSTICK_MINT */