annotate src/joystick/mint/SDL_sysjoystick.c @ 461:1d36f593078a

Date: Thu, 18 Jul 2002 23:51:40 +0200 (MEST) From: Krister Walfridsson Subject: [SDL] src/joystick/bsd/SDL_sysjoystick.c patch The *BSD USB HID joystick code has two serious bugs: 1. If a joystick reports unhandled hid_input usage (for example HUG_RZ or HUG_DIAL), then the last handled value will be overwritten with an arbitrary value. (Fixed in the patch below by adding a default case.) 2. The current code does only handle logical coordinates in the range 0-255, while a big part of available joysticks report -128 - 127. (This is solved in the patch below by first center the range around 0, and then stretch it to the correct range.)
author Sam Lantinga <slouken@libsdl.org>
date Tue, 20 Aug 2002 06:08:42 +0000
parents 9c6613983e85
children 7853b6af5957
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
3 Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
6 modify it under the terms of the GNU Library General Public
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
8 version 2 of the License, or (at your option) any later version.
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
13 Library General Public License for more details.
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
14
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
15 You should have received a copy of the GNU Library General Public
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
16 License along with this library; if not, write to the Free
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
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 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
22
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
23 #ifdef SAVE_RCSID
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
24 static char rcsid =
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
25 "@(#) $Id$";
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
26 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
27
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 * Atari Joystick/Joypad drivers
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 * Patrice Mandin
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
32 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
33
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
34 #include <stdio.h>
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
35 #include <stdlib.h>
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
36 #include <string.h>
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
37
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
38 #include <sys/cookie.h>
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
39 #include <mint/osbind.h>
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
40
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
41 #include "SDL_types.h"
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
42 #include "SDL_error.h"
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
43 #include "SDL_joystick.h"
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
44 #include "SDL_sysjoystick.h"
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
45 #include "SDL_joystick_c.h"
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
46
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
47 #include "SDL_ikbdinterrupt_s.h"
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
48 #include "SDL_xbiosevents_c.h"
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
49 #include "SDL_xbiosinterrupt_s.h"
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
50
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
51 /*--- Const ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
52
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
53 /* We can have:
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
54 1 joystick on IKBD port 1, read via hardware I/O
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
55 or same joystick on IKBD port 1, read via xbios
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
56 2 joypads on ports A,B
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
57 or 4 joysticks on joypads ports A,B
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
58 or 1 lightpen on joypad port A
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
59 or 2 analog paddles on joypads ports A,B
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
60 2 joysticks on parallel port
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
61 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
62
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
63 enum {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
64 IKBD_JOY1=0,
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
65 XBIOS_JOY1,
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
66 PORTA_PAD,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
67 PORTB_PAD,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
68 PORTA_JOY0,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
69 PORTA_JOY1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
70 PORTB_JOY0,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
71 PORTB_JOY1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
72 PORTA_LP,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
73 PORTA_ANPAD,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
74 PORTB_ANPAD,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
75 #if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
76 PARA_JOY0,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
77 PARA_JOY1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
78 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
79 MAX_JOYSTICKS
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
80 };
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 enum {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
83 MCH_ST=0,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
84 MCH_STE,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
85 MCH_TT,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
86 MCH_F30
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
87 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
88
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
89 /* Joypad buttons
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
90 * Procontroller note:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
91 * L,R are connected to 4,6
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
92 * X,Y,Z are connected to 7,8,9
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
93 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
94
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
95 enum {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
96 JP_UP=0, JP_DOWN, JP_LEFT, JP_RIGHT,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
97 JP_KPMULT, JP_KP7, JP_KP4, JP_KP1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
98 JP_KP0, JP_KP8, JP_KP5, JP_KP2,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
99 JP_KPNUM, JP_KP9, JP_KP6, JP_KP3,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
100 JP_PAUSE, JP_FIRE0, JP_UNDEF0, JP_FIRE1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
101 JP_UNDEF1, JP_FIRE2, JP_UNDEF2, JP_OPTION
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
102 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
103
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
104 #define JP_NUM_BUTTONS 17
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 #define PORT_JS_RIGHT (1<<0)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
107 #define PORT_JS_LEFT (1<<1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
108 #define PORT_JS_DOWN (1<<2)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
109 #define PORT_JS_UP (1<<3)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
110 #define PORT_JS_FIRE (1<<4)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
111
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
112 /*--- Types ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
113
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
114 typedef struct {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
115 SDL_bool enabled;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
116 unsigned char *name;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
117 Uint32 prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
118 } atarijoy_t;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
119
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
120 /*--- Variables ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
121
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
122 static atarijoy_t atarijoysticks[MAX_JOYSTICKS]={
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
123 {SDL_FALSE,"IKBD joystick port 1",0},
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
124 {SDL_FALSE,"Xbios joystick port 1",0},
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
125 {SDL_FALSE,"Joypad port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
126 {SDL_FALSE,"Joypad port B",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
127 {SDL_FALSE,"Joystick 0 port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
128 {SDL_FALSE,"Joystick 1 port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
129 {SDL_FALSE,"Joystick 0 port B",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
130 {SDL_FALSE,"Joystick 1 port B",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
131 {SDL_FALSE,"Lightpen port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
132 {SDL_FALSE,"Analog paddle port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
133 {SDL_FALSE,"Analog paddle port B",0}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
134 #if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
135 ,{SDL_FALSE,"Joystick 0 parallel port",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
136 {SDL_FALSE,"Joystick 1 parallel port",0}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
137 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
138 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
139
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
140 static const int jp_buttons[JP_NUM_BUTTONS]={
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
141 JP_FIRE0, JP_FIRE1, JP_FIRE2, JP_PAUSE,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
142 JP_OPTION, JP_KPMULT, JP_KPNUM, JP_KP0,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
143 JP_KP1, JP_KP2, JP_KP3, JP_KP4,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
144 JP_KP5, JP_KP6, JP_KP7, JP_KP8,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
145 JP_KP9
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
146 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
147
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
148 static SDL_bool joypad_ports_enabled=SDL_FALSE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
149
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
150 /* Updated joypad ports */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
151 static Uint16 jp_paddles[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
152 static Uint16 jp_lightpens[2];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
153 static Uint16 jp_directions;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
154 static Uint16 jp_fires;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
155 static Uint32 jp_joypads[2];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
156
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
157 /*--- Functions prototypes ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
158
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
159 static int GetEnabledAtariJoystick(int index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
160 static void UpdateJoypads(void);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
161
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
162 /*--- Functions ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
163
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
164 int SDL_SYS_JoystickInit(void)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
165 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
166 int i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
167 unsigned long cookie_mch;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
168 const char *envr=getenv("SDL_JOYSTICK_ATARI");
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
169
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
170 #define TEST_JOY_ENABLED(env,idstring,num) \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
171 if (strstr(env,idstring"-off")) { \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
172 atarijoysticks[num].enabled=SDL_FALSE; \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
173 } \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
174 if (strstr(env,idstring"-on")) { \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
175 atarijoysticks[num].enabled=SDL_TRUE; \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
176 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
177
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
178 /* Cookie _MCH present ? if not, assume ST machine */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
179 if (Getcookie(C__MCH, &cookie_mch) != C_FOUND) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
180 cookie_mch = MCH_ST << 16;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
181 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
182
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
183 /* Enable some default joysticks */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
184 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
185 (cookie_mch == MCH_TT<<16) || (cookie_mch == MCH_F30<<16)) {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
186 atarijoysticks[IKBD_JOY1].enabled=(SDL_AtariIkbd_enabled!=0);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
187 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
188 if ((cookie_mch == MCH_STE<<16) || (cookie_mch == MCH_F30<<16)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
189 atarijoysticks[PORTA_PAD].enabled=SDL_TRUE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
190 atarijoysticks[PORTB_PAD].enabled=SDL_TRUE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
191 }
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
192 if (!atarijoysticks[IKBD_JOY1].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
193 atarijoysticks[XBIOS_JOY1].enabled=(SDL_AtariXbios_enabled!=0);
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
194 }
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
195
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
196 /* Read environment for joysticks to enable */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
197 if (envr) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
198 /* IKBD on any Atari, maybe clones */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
199 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
200 (cookie_mch == MCH_TT<<16) || (cookie_mch == MCH_F30<<16)) {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
201 if (SDL_AtariIkbd_enabled!=0) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
202 TEST_JOY_ENABLED(envr, "ikbd-joy1", IKBD_JOY1);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
203 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
204 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
205 /* Joypads ports only on STE and Falcon */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
206 if ((cookie_mch == MCH_STE<<16) || (cookie_mch == MCH_F30<<16)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
207 TEST_JOY_ENABLED(envr, "porta-pad", PORTA_PAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
208 if (!atarijoysticks[PORTA_PAD].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
209 TEST_JOY_ENABLED(envr, "porta-joy0", PORTA_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
210 TEST_JOY_ENABLED(envr, "porta-joy1", PORTA_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
211 if (!(atarijoysticks[PORTA_JOY0].enabled) && !(atarijoysticks[PORTA_JOY1].enabled)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
212 TEST_JOY_ENABLED(envr, "porta-lp", PORTA_LP);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
213 if (!atarijoysticks[PORTA_LP].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
214 TEST_JOY_ENABLED(envr, "porta-anpad", PORTA_ANPAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
215 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
216 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
217 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
218
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
219 TEST_JOY_ENABLED(envr, "portb-pad", PORTB_PAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
220 if (!atarijoysticks[PORTB_PAD].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
221 TEST_JOY_ENABLED(envr, "portb-joy0", PORTB_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
222 TEST_JOY_ENABLED(envr, "portb-joy1", PORTB_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
223 if (!(atarijoysticks[PORTB_JOY0].enabled) && !(atarijoysticks[PORTB_JOY1].enabled)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
224 TEST_JOY_ENABLED(envr, "portb-anpad", PORTB_ANPAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
225 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
226 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
227 }
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
228
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
229 if (!atarijoysticks[IKBD_JOY1].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
230 if (SDL_AtariXbios_enabled!=0) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
231 TEST_JOY_ENABLED(envr, "xbios-joy1", XBIOS_JOY1);
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
232 }
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
233 }
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
234 #if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
235 /* Parallel port on any Atari, maybe clones */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
236 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
237 (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
238 TEST_JOY_ENABLED(envr, "para-joy0", PARA_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
239 TEST_JOY_ENABLED(envr, "para-joy1", PARA_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
240 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
241 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
242 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
243
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
244 /* Need to update joypad ports ? */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
245 joypad_ports_enabled=SDL_FALSE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
246 for (i=PORTA_PAD;i<=PORTB_ANPAD;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
247 if (atarijoysticks[i].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
248 joypad_ports_enabled=SDL_TRUE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
249 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
250 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
251 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
252
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
253 SDL_numjoysticks = 0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
254 for (i=0;i<MAX_JOYSTICKS;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
255 if (atarijoysticks[i].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
256 ++SDL_numjoysticks;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
257 }
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
260 return(SDL_numjoysticks);
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
263 static int GetEnabledAtariJoystick(int index)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
264 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
265 int i,j;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
266
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
267 /* Return the nth'index' enabled atari joystick */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
268 j=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
269 for (i=0;i<MAX_JOYSTICKS;i++) {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
270 if (!atarijoysticks[i].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
271 continue;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
272 }
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
273
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
274 if (j==index) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
275 break;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
276 }
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
277
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
278 ++j;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
279 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
280 if (i==MAX_JOYSTICKS)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
281 return -1;
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 return i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
284 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
285
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
286 const char *SDL_SYS_JoystickName(int index)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
287 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
288 int numjoystick;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
289
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
290 numjoystick=GetEnabledAtariJoystick(index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
291 if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
292 return NULL;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
293
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
294 return(atarijoysticks[numjoystick].name);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
295 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
296
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
297 int SDL_SYS_JoystickOpen(SDL_Joystick *joystick)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
298 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
299 int numjoystick;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
300
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
301 numjoystick=GetEnabledAtariJoystick(joystick->index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
302 if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
303 return -1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
304
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
305 if ((numjoystick==PORTA_PAD) || (numjoystick==PORTB_PAD)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
306 joystick->nbuttons=JP_NUM_BUTTONS;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
307 } else if ((numjoystick==PORTA_LP) || (numjoystick==PORTA_ANPAD) ||
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
308 (numjoystick==PORTB_ANPAD)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
309 joystick->nbuttons=2;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
310 } else {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
311 joystick->nbuttons=1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
312 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
313 joystick->naxes=2;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
314 joystick->nballs=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
315 joystick->nhats=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
316
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
317 return(0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
318 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
319
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
320 void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
321 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
322 int numjoystick;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
323 Uint32 curstate,prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
324 Sint16 curaxis;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
325
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
326 numjoystick=GetEnabledAtariJoystick(joystick->index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
327 if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
328 return;
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 prevstate = atarijoysticks[numjoystick].prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
331
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
332 if (joypad_ports_enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
333 Supexec(UpdateJoypads);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
334 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
335
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
336 switch (numjoystick) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
337 case IKBD_JOY1:
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
338 case XBIOS_JOY1:
302
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 curstate = 0;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
341
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
342 if (numjoystick==IKBD_JOY1) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
343 curstate = SDL_AtariIkbd_joystick & 0xff;
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 if (numjoystick==XBIOS_JOY1) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
346 curstate = SDL_AtariXbios_joystick & 0xff;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
347 }
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
348
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
349 if (curstate != prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
350 /* X axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
351 if ((curstate & (IKBD_JOY_LEFT|IKBD_JOY_RIGHT)) != (prevstate & (IKBD_JOY_LEFT|IKBD_JOY_RIGHT))) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
352 curaxis=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
353 if (curstate & IKBD_JOY_LEFT) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
354 curaxis=-128;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
355 } else if (curstate & IKBD_JOY_RIGHT) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
356 curaxis=127;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
357 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
358 SDL_PrivateJoystickAxis(joystick,0,curaxis);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
359 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
360 /* Y axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
361 if ((curstate & (IKBD_JOY_UP|IKBD_JOY_DOWN)) != (prevstate & (IKBD_JOY_UP|IKBD_JOY_DOWN))) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
362 curaxis=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
363 if (curstate & IKBD_JOY_UP) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
364 curaxis=-128;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
365 } else if (curstate & IKBD_JOY_DOWN) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
366 curaxis=127;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
367 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
368 SDL_PrivateJoystickAxis(joystick,1,curaxis);
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 /* Button */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
371 if ((curstate & IKBD_JOY_FIRE) && !(prevstate & IKBD_JOY_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
372 SDL_PrivateJoystickButton(joystick,0,SDL_PRESSED);
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 if (!(curstate & IKBD_JOY_FIRE) && (prevstate & IKBD_JOY_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
375 SDL_PrivateJoystickButton(joystick,0,SDL_RELEASED);
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 }
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
378 atarijoysticks[numjoystick].prevstate = curstate;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
379 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
380 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
381 case PORTA_PAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
382 case PORTB_PAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
383 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
384 int numjoypad,i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
385
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
386 numjoypad=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
387 /* if (numjoystick==PORTA_PAD) numjoypad=0;*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
388 if (numjoystick==PORTB_PAD) numjoypad=1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
389
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
390 curstate=jp_joypads[numjoypad];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
391 if (curstate!=prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
392 /* X axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
393 if ((curstate & ((1<<JP_LEFT)|(1<<JP_RIGHT))) != (prevstate & ((1<<JP_LEFT)|(1<<JP_RIGHT)))) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
394 curaxis=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
395 if (curstate & (1<<JP_LEFT)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
396 curaxis=-128;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
397 } else if (curstate & (1<<JP_RIGHT)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
398 curaxis=127;
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 SDL_PrivateJoystickAxis(joystick,0,curaxis);
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 /* Y axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
403 if ((curstate & ((1<<JP_UP)|(1<<JP_DOWN))) != (prevstate & ((1<<JP_UP)|(1<<JP_DOWN)))) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
404 curaxis=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
405 if (curstate & (1<<JP_UP)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
406 curaxis=-128;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
407 } else if (curstate & (1<<JP_DOWN)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
408 curaxis=127;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
409 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
410 SDL_PrivateJoystickAxis(joystick,1,curaxis);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
411 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
412 /* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
413 for (i=0;i<JP_NUM_BUTTONS;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
414 int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
415
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
416 button=1<<jp_buttons[i];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
417
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
418 if ((curstate & button) && !(prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
419 SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
420 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
421 if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
422 SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
423 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
424 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
425 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
426 atarijoysticks[numjoystick].prevstate = curstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
427 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
428 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
429 case PORTA_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
430 case PORTA_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
431 case PORTB_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
432 case PORTB_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
433 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
434 int fire_shift=0,dir_shift=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
435
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
436 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
437 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
438 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
439 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
440
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
441 curstate = (jp_directions>>dir_shift) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
442 curstate |= ((jp_fires>>fire_shift) & 1)<<4;
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 if (curstate != prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
445 /* X axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
446 if ((curstate & (PORT_JS_LEFT|PORT_JS_RIGHT)) != (prevstate & (PORT_JS_LEFT|PORT_JS_RIGHT))) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
447 curaxis=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
448 if (curstate & PORT_JS_LEFT) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
449 curaxis=-128;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
450 } else if (curstate & PORT_JS_RIGHT) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
451 curaxis=127;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
452 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
453 SDL_PrivateJoystickAxis(joystick,0,curaxis);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
454 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
455 /* Y axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
456 if ((curstate & (PORT_JS_UP|PORT_JS_DOWN)) != (prevstate & (PORT_JS_UP|PORT_JS_DOWN))) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
457 curaxis=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
458 if (curstate & PORT_JS_UP) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
459 curaxis=-128;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
460 } else if (curstate & PORT_JS_DOWN) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
461 curaxis=127;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
462 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
463 SDL_PrivateJoystickAxis(joystick,1,curaxis);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
464 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
465 /* Button */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
466 if ((curstate & PORT_JS_FIRE) && !(prevstate & PORT_JS_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
467 SDL_PrivateJoystickButton(joystick,0,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
468 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
469 if (!(curstate & PORT_JS_FIRE) && (prevstate & PORT_JS_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
470 SDL_PrivateJoystickButton(joystick,0,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
471 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
472 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
473 atarijoysticks[numjoystick].prevstate = curstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
474 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
475 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
476 case PORTA_LP:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
477 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
478 int i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
479
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
480 curstate = jp_lightpens[0]>>1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
481 curstate |= (jp_lightpens[1]>>1)<<15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
482 curstate |= (jp_fires & 3)<<30;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
483
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
484 if (curstate != prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
485 /* X axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
486 SDL_PrivateJoystickAxis(joystick,0,(jp_lightpens[0]>>8)-128);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
487 /* Y axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
488 SDL_PrivateJoystickAxis(joystick,1,(jp_lightpens[1]>>8)-128);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
489 /* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
490 for (i=0;i<2;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
491 int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
492
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
493 button=1<<(30+i);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
494
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
495 if ((curstate & button) && !(prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
496 SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
497 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
498 if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
499 SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
500 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
501 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
502 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
503 atarijoysticks[numjoystick].prevstate = curstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
504 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
505 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
506 case PORTA_ANPAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
507 case PORTB_ANPAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
508 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
509 int numpaddle, i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
510
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
511 numpaddle=0<<1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
512 if (numjoystick==PORTB_ANPAD) numpaddle=1<<1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
513
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
514 curstate = jp_paddles[numpaddle]>>1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
515 curstate |= (jp_paddles[numpaddle+1]>>1)<<15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
516 curstate |= ((jp_fires>>numpaddle) & 3)<<30;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
517
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
518 if (curstate != prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
519 /* X axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
520 SDL_PrivateJoystickAxis(joystick,0,(jp_paddles[numpaddle]>>8)-128);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
521 /* Y axis */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
522 SDL_PrivateJoystickAxis(joystick,1,(jp_paddles[numpaddle+1]>>8)-128);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
523 /* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
524 for (i=0;i<2;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
525 int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
526
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
527 button=1<<(30+i);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
528
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
529 if ((curstate & button) && !(prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
530 SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
531 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
532 if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
533 SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
534 }
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 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
537 atarijoysticks[numjoystick].prevstate = curstate;
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;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
540 #if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
541 case PARA_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
542 case PARA_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
543 break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
544 #endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
545 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
546
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
547 return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
548 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
549
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
550 void SDL_SYS_JoystickClose(SDL_Joystick *joystick)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
551 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
552 return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
553 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
554
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
555 void SDL_SYS_JoystickQuit(void)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
556 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
557 SDL_numjoysticks=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
558 return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
559 }
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
560
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
561 /*--- Joypad I/O read/write interface ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
562
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
563 #define JOYPAD_IO_BASE (0xffff9200)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
564 struct JOYPAD_IO_S {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
565 Uint16 fires;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
566 Uint16 directions;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
567 Uint16 dummy1[6];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
568 Uint16 paddles[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
569 Uint16 dummy2[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
570 Uint16 lightpens[2];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
571 };
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
572 #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
573
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
574 static void UpdateJoypads(void)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
575 {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
576 Uint16 tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
577
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
578 /*--- This function is called in supervisor mode ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
579
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
580 /* Update joysticks */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
581 jp_fires = (~(JOYPAD_IO.fires)) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
582 jp_directions = (~(JOYPAD_IO.directions));
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
583
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
584 /* Update lightpen */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
585 tmp = JOYPAD_IO.lightpens[0] & 1023;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
586 jp_lightpens[0] = (tmp<<6) | (tmp>>4);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
587 tmp = JOYPAD_IO.lightpens[1] & 1023;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
588 jp_lightpens[1] = (tmp<<6) | (tmp>>4);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
589
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
590 /* Update paddles */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
591 tmp = (JOYPAD_IO.paddles[0] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
592 jp_paddles[0] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
593 tmp = (JOYPAD_IO.paddles[1] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
594 jp_paddles[1] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
595 tmp = (JOYPAD_IO.paddles[2] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
596 jp_paddles[2] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
597 tmp = (JOYPAD_IO.paddles[3] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
598 jp_paddles[3] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
599
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
600 /* Update joypad 0 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
601 JOYPAD_IO.directions=0xfffe;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
602 jp_joypads[0]=((~(JOYPAD_IO.fires)) & 3)<<(16);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
603 JOYPAD_IO.directions=0xfffe;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
604 jp_joypads[0] |= ((~(JOYPAD_IO.directions))>>8) & 15;
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 JOYPAD_IO.directions=0xfffd;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
607 jp_joypads[0] |= ((~(JOYPAD_IO.fires)) & 3)<<(16+2);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
608 JOYPAD_IO.directions=0xfffd;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
609 jp_joypads[0] |= (((~(JOYPAD_IO.directions))>>8) & 15)<<4;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
610
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
611 JOYPAD_IO.directions=0xfffb;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
612 jp_joypads[0] |= ((~(JOYPAD_IO.fires)) & 3)<<(16+4);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
613 JOYPAD_IO.directions=0xfffb;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
614 jp_joypads[0] |= (((~(JOYPAD_IO.directions))>>8) & 15)<<8;
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 JOYPAD_IO.directions=0xfff7;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
617 jp_joypads[0] |= ((~(JOYPAD_IO.fires)) & 3)<<(16+6);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
618 JOYPAD_IO.directions=0xfff7;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
619 jp_joypads[0] |= (((~(JOYPAD_IO.directions))>>8) & 15)<<12;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
620
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
621 /* Update joypad 1 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
622 JOYPAD_IO.directions=0xffef;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
623 jp_joypads[1]=((~(JOYPAD_IO.fires)) & (3<<2))<<(16-2);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
624 JOYPAD_IO.directions=0xffef;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
625 jp_joypads[1] |= ((~(JOYPAD_IO.directions))>>12) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
626
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
627 JOYPAD_IO.directions=0xffdf;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
628 jp_joypads[1] |= ((~(JOYPAD_IO.fires)) & (3<<2))<<(16);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
629 JOYPAD_IO.directions=0xffdf;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
630 jp_joypads[1] |= (((~(JOYPAD_IO.directions))>>12) & 15)<<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 JOYPAD_IO.directions=0xffbf;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
633 jp_joypads[1] |= ((~(JOYPAD_IO.fires)) & (3<<2))<<(16+2);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
634 JOYPAD_IO.directions=0xffbf;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
635 jp_joypads[1] |= (((~(JOYPAD_IO.directions))>>12) & 15)<<8;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
636
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
637 JOYPAD_IO.directions=0xff7f;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
638 jp_joypads[1] |= ((~(JOYPAD_IO.fires)) & (3<<2))<<(16+4);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
639 JOYPAD_IO.directions=0xff7f;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
640 jp_joypads[1] |= (((~(JOYPAD_IO.directions))>>12) & 15)<<12;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
641 }