src/joystick/mint/SDL_sysjoystick.c
author Patrice Mandin <patmandin@gmail.com>
Sat, 25 Jun 2005 18:21:13 +0000
changeset 1079 39b5606fa543
parent 1054 e89d7f826b4a
child 1312 c9b51268668f
permissions -rw-r--r--
Forgot enumeration value for Atari clones
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
769
b8d311d90021 Updated copyright information for 2004 (Happy New Year!)
Sam Lantinga <slouken@libsdl.org>
parents: 557
diff changeset
     3
    Copyright (C) 1997-2004 Sam Lantinga
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     4
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     5
    This library is free software; you can redistribute it and/or
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
557
0ce5a68278fd Updated Atari port for new system headers (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents: 507
diff changeset
    38
#include <mint/cookie.h>
302
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,
1054
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
    86
	MCH_F30,
1079
39b5606fa543 Forgot enumeration value for Atari clones
Patrice Mandin <patmandin@gmail.com>
parents: 1054
diff changeset
    87
	MCH_CLONE,
1054
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
    88
	MCH_ARANYM
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    89
};
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    90
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    91
/*	Joypad buttons
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    92
 *		Procontroller note:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    93
 *			L,R are connected to 4,6
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    94
 *			X,Y,Z are connected to 7,8,9
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    95
 */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    96
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    97
enum {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    98
	JP_UP=0,	JP_DOWN,	JP_LEFT,	JP_RIGHT,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    99
	JP_KPMULT,	JP_KP7,		JP_KP4,		JP_KP1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   100
	JP_KP0,		JP_KP8,		JP_KP5,		JP_KP2,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   101
	JP_KPNUM,	JP_KP9,		JP_KP6,		JP_KP3,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   102
	JP_PAUSE,	JP_FIRE0,	JP_UNDEF0,	JP_FIRE1,
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   103
	JP_UNDEF1,	JP_FIRE2,	JP_UNDEF2,	JP_OPTION
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   104
};
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 JP_NUM_BUTTONS 17
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   107
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   108
#define PORT_JS_RIGHT	(1<<0)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   109
#define PORT_JS_LEFT	(1<<1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   110
#define PORT_JS_DOWN	(1<<2)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   111
#define PORT_JS_UP		(1<<3)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   112
#define PORT_JS_FIRE	(1<<4)
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
/*--- Types ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   115
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   116
typedef struct {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   117
	SDL_bool enabled;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   118
	unsigned char *name;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   119
	Uint32 prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   120
} atarijoy_t;
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
/*--- Variables ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   123
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   124
static atarijoy_t atarijoysticks[MAX_JOYSTICKS]={
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   125
	{SDL_FALSE,"IKBD joystick port 1",0},
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   126
	{SDL_FALSE,"Xbios joystick port 1",0},
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   127
	{SDL_FALSE,"Joypad port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   128
	{SDL_FALSE,"Joypad port B",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   129
	{SDL_FALSE,"Joystick 0 port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   130
	{SDL_FALSE,"Joystick 1 port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   131
	{SDL_FALSE,"Joystick 0 port B",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   132
	{SDL_FALSE,"Joystick 1 port B",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   133
	{SDL_FALSE,"Lightpen port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   134
	{SDL_FALSE,"Analog paddle port A",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   135
	{SDL_FALSE,"Analog paddle port B",0}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   136
#if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   137
	,{SDL_FALSE,"Joystick 0 parallel port",0},
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   138
	{SDL_FALSE,"Joystick 1 parallel port",0}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   139
#endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   140
};
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   141
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   142
static const int jp_buttons[JP_NUM_BUTTONS]={
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   143
	JP_FIRE0,	JP_FIRE1,	JP_FIRE2,	JP_PAUSE,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   144
	JP_OPTION,	JP_KPMULT,	JP_KPNUM,	JP_KP0,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   145
	JP_KP1,		JP_KP2,		JP_KP3,		JP_KP4,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   146
	JP_KP5,		JP_KP6,		JP_KP7,		JP_KP8,
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   147
	JP_KP9
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   148
};
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
static SDL_bool joypad_ports_enabled=SDL_FALSE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   151
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   152
/* Updated joypad ports */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   153
static Uint16 jp_paddles[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   154
static Uint16 jp_lightpens[2];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   155
static Uint16 jp_directions;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   156
static Uint16 jp_fires;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   157
static Uint32 jp_joypads[2];
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
/*--- Functions prototypes ---*/
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   160
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   161
static int GetEnabledAtariJoystick(int index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   162
static void UpdateJoypads(void);
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
/*--- Functions ---*/
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 SDL_SYS_JoystickInit(void)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   167
{
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   168
	int i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   169
	unsigned long cookie_mch;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   170
	const char *envr=getenv("SDL_JOYSTICK_ATARI");
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   171
	
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   172
#define TEST_JOY_ENABLED(env,idstring,num) \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   173
	if (strstr(env,idstring"-off")) { \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   174
		atarijoysticks[num].enabled=SDL_FALSE; \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   175
	} \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   176
	if (strstr(env,idstring"-on")) { \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   177
		atarijoysticks[num].enabled=SDL_TRUE; \
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   178
	}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   179
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   180
	/* Cookie _MCH present ? if not, assume ST machine */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   181
	if (Getcookie(C__MCH, &cookie_mch) != C_FOUND) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   182
		cookie_mch = MCH_ST << 16;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   183
	}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   184
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   185
	/* Enable some default joysticks */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   186
	if ((cookie_mch == MCH_ST<<16) || ((cookie_mch>>16) == MCH_STE) ||
1054
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
   187
		(cookie_mch == MCH_TT<<16) || (cookie_mch == MCH_F30<<16) ||
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
   188
		(cookie_mch == MCH_ARANYM<<16)) {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   189
		atarijoysticks[IKBD_JOY1].enabled=(SDL_AtariIkbd_enabled!=0);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   190
	}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   191
	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
   192
		atarijoysticks[PORTA_PAD].enabled=SDL_TRUE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   193
		atarijoysticks[PORTB_PAD].enabled=SDL_TRUE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   194
	}
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   195
	if (!atarijoysticks[IKBD_JOY1].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   196
		atarijoysticks[XBIOS_JOY1].enabled=(SDL_AtariXbios_enabled!=0);
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   197
	}
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   198
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   199
	/* Read environment for joysticks to enable */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   200
	if (envr) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   201
		/* IKBD on any Atari, maybe clones */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   202
		if ((cookie_mch == MCH_ST<<16) || ((cookie_mch>>16) == MCH_STE) ||
1054
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
   203
			(cookie_mch == MCH_TT<<16) || (cookie_mch == MCH_F30<<16) ||
e89d7f826b4a Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents: 963
diff changeset
   204
			(cookie_mch == MCH_ARANYM<<16)) {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   205
			if (SDL_AtariIkbd_enabled!=0) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   206
				TEST_JOY_ENABLED(envr, "ikbd-joy1", IKBD_JOY1);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   207
			}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   208
		}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   209
		/* Joypads ports only on STE and Falcon */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   210
		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
   211
			TEST_JOY_ENABLED(envr, "porta-pad", PORTA_PAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   212
			if (!atarijoysticks[PORTA_PAD].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   213
				TEST_JOY_ENABLED(envr, "porta-joy0", PORTA_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   214
				TEST_JOY_ENABLED(envr, "porta-joy1", PORTA_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   215
				if (!(atarijoysticks[PORTA_JOY0].enabled) && !(atarijoysticks[PORTA_JOY1].enabled)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   216
					TEST_JOY_ENABLED(envr, "porta-lp", PORTA_LP);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   217
					if (!atarijoysticks[PORTA_LP].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   218
						TEST_JOY_ENABLED(envr, "porta-anpad", PORTA_ANPAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   219
					}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   220
				}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   221
			}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   222
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   223
			TEST_JOY_ENABLED(envr, "portb-pad", PORTB_PAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   224
			if (!atarijoysticks[PORTB_PAD].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   225
				TEST_JOY_ENABLED(envr, "portb-joy0", PORTB_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   226
				TEST_JOY_ENABLED(envr, "portb-joy1", PORTB_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   227
				if (!(atarijoysticks[PORTB_JOY0].enabled) && !(atarijoysticks[PORTB_JOY1].enabled)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   228
					TEST_JOY_ENABLED(envr, "portb-anpad", PORTB_ANPAD);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   229
				}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   230
			}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   231
		}
305
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
		if (!atarijoysticks[IKBD_JOY1].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   234
			if (SDL_AtariXbios_enabled!=0) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   235
				TEST_JOY_ENABLED(envr, "xbios-joy1", XBIOS_JOY1);
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   236
			}
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   237
		}
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   238
#if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   239
		/* Parallel port on any Atari, maybe clones */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   240
		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
   241
			(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
   242
			TEST_JOY_ENABLED(envr, "para-joy0", PARA_JOY0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   243
			TEST_JOY_ENABLED(envr, "para-joy1", PARA_JOY1);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   244
		}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   245
#endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   246
	}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   247
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   248
	/* Need to update joypad ports ? */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   249
	joypad_ports_enabled=SDL_FALSE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   250
	for (i=PORTA_PAD;i<=PORTB_ANPAD;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   251
		if (atarijoysticks[i].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   252
			joypad_ports_enabled=SDL_TRUE;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   253
			break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   254
		}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   255
	}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   256
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   257
	SDL_numjoysticks = 0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   258
	for (i=0;i<MAX_JOYSTICKS;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   259
		if (atarijoysticks[i].enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   260
			++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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   264
	return(SDL_numjoysticks);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   265
}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   266
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   267
static int GetEnabledAtariJoystick(int index)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   268
{
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   269
	int i,j;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   270
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   271
	/* Return the nth'index' enabled atari joystick */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   272
	j=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   273
	for (i=0;i<MAX_JOYSTICKS;i++) {
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   274
		if (!atarijoysticks[i].enabled) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   275
			continue;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   276
		}
305
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
		if (j==index) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   279
			break;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   280
		}
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   281
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   282
		++j;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   283
	}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   284
	if (i==MAX_JOYSTICKS)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   285
		return -1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   286
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   287
	return i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   288
}
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
const char *SDL_SYS_JoystickName(int index)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   291
{
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   292
	int numjoystick;
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
	numjoystick=GetEnabledAtariJoystick(index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   295
	if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   296
		return NULL;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   297
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   298
	return(atarijoysticks[numjoystick].name);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   299
}
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
int SDL_SYS_JoystickOpen(SDL_Joystick *joystick)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   302
{
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   303
	int numjoystick;
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
	numjoystick=GetEnabledAtariJoystick(joystick->index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   306
	if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   307
		return -1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   308
	
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   309
	joystick->naxes=0;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   310
	joystick->nhats=0;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   311
	joystick->nballs=0;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   312
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   313
	switch(numjoystick) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   314
		case PORTA_PAD:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   315
		case PORTB_PAD:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   316
			joystick->nhats=1;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   317
			joystick->nbuttons=JP_NUM_BUTTONS;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   318
			break;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   319
		case PORTA_LP:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   320
		case PORTA_ANPAD:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   321
		case PORTB_ANPAD:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   322
			joystick->naxes=2;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   323
			joystick->nbuttons=2;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   324
			break;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   325
		default:
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   326
			joystick->nhats=1;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   327
			joystick->nbuttons=1;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   328
			break;
302
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   331
	return(0);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   332
}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   333
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   334
void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick)
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
	int numjoystick;
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   337
	Uint8 hatstate;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   338
	Uint32 curstate,prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   339
	
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   340
	numjoystick=GetEnabledAtariJoystick(joystick->index);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   341
	if (numjoystick==-1)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   342
		return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   343
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   344
	prevstate = atarijoysticks[numjoystick].prevstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   345
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   346
	if (joypad_ports_enabled) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   347
		Supexec(UpdateJoypads);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   348
	}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   349
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   350
	switch (numjoystick) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   351
		case IKBD_JOY1:
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   352
		case XBIOS_JOY1:
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   353
			{
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   354
				curstate = 0;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   355
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   356
				if (numjoystick==IKBD_JOY1) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   357
					curstate = SDL_AtariIkbd_joystick & 0xff;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   358
				}
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   359
				if (numjoystick==XBIOS_JOY1) {
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   360
					curstate = SDL_AtariXbios_joystick & 0xff;
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   361
				}
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   362
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   363
				if (curstate != prevstate) {
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   364
					hatstate = SDL_HAT_CENTERED;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   365
					if (curstate & IKBD_JOY_LEFT) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   366
						hatstate |= SDL_HAT_LEFT;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   367
					}
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   368
					if (curstate & IKBD_JOY_RIGHT) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   369
						hatstate |= SDL_HAT_RIGHT;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   370
					}
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   371
					if (curstate & IKBD_JOY_UP) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   372
						hatstate |= SDL_HAT_UP;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   373
					}
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   374
					if (curstate & IKBD_JOY_DOWN) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   375
						hatstate |= SDL_HAT_DOWN;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   376
					}
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   377
					SDL_PrivateJoystickHat(joystick, 0, hatstate);
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   378
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   379
					/* Button */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   380
					if ((curstate & IKBD_JOY_FIRE) && !(prevstate & IKBD_JOY_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   381
						SDL_PrivateJoystickButton(joystick,0,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   382
					}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   383
					if (!(curstate & IKBD_JOY_FIRE) && (prevstate & IKBD_JOY_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   384
						SDL_PrivateJoystickButton(joystick,0,SDL_RELEASED);
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
				}
305
9c6613983e85 Atari port cleanups from Patrice
Sam Lantinga <slouken@libsdl.org>
parents: 302
diff changeset
   387
				atarijoysticks[numjoystick].prevstate = curstate;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   388
			}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   389
			break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   390
		case PORTA_PAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   391
		case PORTB_PAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   392
			{
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   393
				int numjoypad,i;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   394
				
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   395
				numjoypad=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   396
				if (numjoystick==PORTB_PAD) numjoypad=1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   397
				
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   398
				curstate=jp_joypads[numjoypad];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   399
				if (curstate!=prevstate) {
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   400
					hatstate = SDL_HAT_CENTERED;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   401
					if (curstate & (1<<JP_LEFT)) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   402
						hatstate |= SDL_HAT_LEFT;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   403
					}
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   404
					if (curstate & (1<<JP_RIGHT)) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   405
						hatstate |= SDL_HAT_RIGHT;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   406
					}
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   407
					if (curstate & (1<<JP_UP)) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   408
						hatstate |= SDL_HAT_UP;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   409
					}
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   410
					if (curstate & (1<<JP_DOWN)) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   411
						hatstate |= SDL_HAT_DOWN;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   412
					}
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   413
					SDL_PrivateJoystickHat(joystick, 0, hatstate);
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   414
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   415
					/* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   416
					for (i=0;i<JP_NUM_BUTTONS;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   417
						int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   418
						
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   419
						button=1<<jp_buttons[i];
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_PRESSED);
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
						if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   425
							SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   426
						}
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
				}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   429
				atarijoysticks[numjoystick].prevstate = curstate;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   430
			}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   431
			break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   432
		case PORTA_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   433
		case PORTA_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   434
		case PORTB_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   435
		case PORTB_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   436
			{
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   437
				int fire_shift=0,dir_shift=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   438
				
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   439
				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
   440
				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
   441
				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
   442
				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
   443
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   444
				curstate = (jp_directions>>dir_shift) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   445
				curstate |= ((jp_fires>>fire_shift) & 1)<<4;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   446
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   447
				if (curstate != prevstate) {
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   448
					hatstate = SDL_HAT_CENTERED;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   449
					if (curstate & PORT_JS_LEFT) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   450
						hatstate |= SDL_HAT_LEFT;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   451
					}
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   452
					if (curstate & PORT_JS_RIGHT) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   453
						hatstate |= SDL_HAT_RIGHT;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   454
					}
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   455
					if (curstate & PORT_JS_UP) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   456
						hatstate |= SDL_HAT_UP;
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   457
					}
963
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   458
					if (curstate & PORT_JS_DOWN) {
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   459
						hatstate |= SDL_HAT_DOWN;
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   460
					}
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   461
					SDL_PrivateJoystickHat(joystick, 0, hatstate);
92c247cec42d No need to try to emulate analog axis when SDL support digital hats
Patrice Mandin <patmandin@gmail.com>
parents: 769
diff changeset
   462
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   463
					/* Button */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   464
					if ((curstate & PORT_JS_FIRE) && !(prevstate & PORT_JS_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   465
						SDL_PrivateJoystickButton(joystick,0,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   466
					}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   467
					if (!(curstate & PORT_JS_FIRE) && (prevstate & PORT_JS_FIRE)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   468
						SDL_PrivateJoystickButton(joystick,0,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   469
					}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   470
				}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   471
				atarijoysticks[numjoystick].prevstate = curstate;
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
			break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   474
		case PORTA_LP:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   475
			{
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   476
				int i;
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
				curstate = jp_lightpens[0]>>1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   479
				curstate |= (jp_lightpens[1]>>1)<<15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   480
				curstate |= (jp_fires & 3)<<30;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   481
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   482
				if (curstate != prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   483
					/* X axis */
507
7853b6af5957 Atari joystick fixes contributed by Patrice Mandin
Sam Lantinga <slouken@libsdl.org>
parents: 305
diff changeset
   484
					SDL_PrivateJoystickAxis(joystick,0,jp_lightpens[0] ^ 0x8000);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   485
					/* Y axis */
507
7853b6af5957 Atari joystick fixes contributed by Patrice Mandin
Sam Lantinga <slouken@libsdl.org>
parents: 305
diff changeset
   486
					SDL_PrivateJoystickAxis(joystick,1,jp_lightpens[1] ^ 0x8000);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   487
					/* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   488
					for (i=0;i<2;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   489
						int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   490
						
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   491
						button=1<<(30+i);
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
						if ((curstate & button) && !(prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   494
							SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   495
						}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   496
						if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   497
							SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   498
						}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   499
					}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   500
				}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   501
				atarijoysticks[numjoystick].prevstate = curstate;
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
			break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   504
		case PORTA_ANPAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   505
		case PORTB_ANPAD:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   506
			{
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   507
				int numpaddle, i;
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
				numpaddle=0<<1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   510
				if (numjoystick==PORTB_ANPAD) numpaddle=1<<1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   511
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   512
				curstate = jp_paddles[numpaddle]>>1;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   513
				curstate |= (jp_paddles[numpaddle+1]>>1)<<15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   514
				curstate |= ((jp_fires>>numpaddle) & 3)<<30;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   515
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   516
				if (curstate != prevstate) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   517
					/* X axis */
507
7853b6af5957 Atari joystick fixes contributed by Patrice Mandin
Sam Lantinga <slouken@libsdl.org>
parents: 305
diff changeset
   518
					SDL_PrivateJoystickAxis(joystick,0,jp_paddles[numpaddle] ^ 0x8000);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   519
					/* Y axis */
507
7853b6af5957 Atari joystick fixes contributed by Patrice Mandin
Sam Lantinga <slouken@libsdl.org>
parents: 305
diff changeset
   520
					SDL_PrivateJoystickAxis(joystick,1,jp_paddles[numpaddle+1] ^ 0x8000);
302
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   521
					/* Buttons */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   522
					for (i=0;i<2;i++) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   523
						int button;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   524
						
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   525
						button=1<<(30+i);
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
						if ((curstate & button) && !(prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   528
							SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   529
						}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   530
						if (!(curstate & button) && (prevstate & button)) {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   531
							SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   532
						}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   533
					}
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
				atarijoysticks[numjoystick].prevstate = curstate;
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
			break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   538
#if 0
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   539
		case PARA_JOY0:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   540
		case PARA_JOY1:
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   541
			break;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   542
#endif
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   543
	};
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   544
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   545
	return;
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   548
void SDL_SYS_JoystickClose(SDL_Joystick *joystick)
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
	return;
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
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   553
void SDL_SYS_JoystickQuit(void)
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
	SDL_numjoysticks=0;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   556
	return;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   557
}
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   558
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   559
/*--- Joypad I/O read/write interface ---*/
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
#define JOYPAD_IO_BASE (0xffff9200)
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   562
struct JOYPAD_IO_S {
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   563
	Uint16 fires;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   564
	Uint16 directions;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   565
	Uint16 dummy1[6];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   566
	Uint16 paddles[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   567
	Uint16 dummy2[4];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   568
	Uint16 lightpens[2];
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   569
};
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   570
#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
   571
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   572
static void UpdateJoypads(void)
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
	Uint16 tmp;
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
	/*--- This function is called in supervisor mode ---*/
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
	/* Update joysticks */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   579
	jp_fires = (~(JOYPAD_IO.fires)) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   580
	jp_directions = (~(JOYPAD_IO.directions));
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   581
	
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   582
	/* Update lightpen */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   583
	tmp = JOYPAD_IO.lightpens[0] & 1023;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   584
	jp_lightpens[0] = (tmp<<6) | (tmp>>4);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   585
	tmp = JOYPAD_IO.lightpens[1] & 1023;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   586
	jp_lightpens[1] = (tmp<<6) | (tmp>>4);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   587
	
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   588
	/* Update paddles */
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   589
	tmp = (JOYPAD_IO.paddles[0] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   590
	jp_paddles[0] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   591
	tmp = (JOYPAD_IO.paddles[1] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   592
	jp_paddles[1] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   593
	tmp = (JOYPAD_IO.paddles[2] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   594
	jp_paddles[2] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   595
	tmp = (JOYPAD_IO.paddles[3] & 255);
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   596
	jp_paddles[3] = (tmp<<8) | tmp;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   597
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   598
	/* Update joypad 0 */	
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   599
	JOYPAD_IO.directions=0xfffe;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   600
	jp_joypads[0]=((~(JOYPAD_IO.fires)) & 3)<<(16);
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.directions))>>8) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   603
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   604
	JOYPAD_IO.directions=0xfffd;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   605
	jp_joypads[0] |= ((~(JOYPAD_IO.fires)) & 3)<<(16+2);
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.directions))>>8) & 15)<<4;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   608
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   609
	JOYPAD_IO.directions=0xfffb;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   610
	jp_joypads[0] |= ((~(JOYPAD_IO.fires)) & 3)<<(16+4);
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.directions))>>8) & 15)<<8;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   613
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   614
	JOYPAD_IO.directions=0xfff7;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   615
	jp_joypads[0] |= ((~(JOYPAD_IO.fires)) & 3)<<(16+6);
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.directions))>>8) & 15)<<12;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   618
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   619
	/* Update joypad 1 */	
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   620
	JOYPAD_IO.directions=0xffef;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   621
	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
   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.directions))>>12) & 15;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   624
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   625
	JOYPAD_IO.directions=0xffdf;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   626
	jp_joypads[1] |= ((~(JOYPAD_IO.fires)) & (3<<2))<<(16);
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.directions))>>12) & 15)<<4;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   629
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   630
	JOYPAD_IO.directions=0xffbf;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   631
	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
   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.directions))>>12) & 15)<<8;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   634
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   635
	JOYPAD_IO.directions=0xff7f;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   636
	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
   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.directions))>>12) & 15)<<12;
8a86bdf34f0f Added Atari joystick support (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   639
}