diff options
Diffstat (limited to 'distrib/sdl-1.2.12/src/joystick/amigaos/SDL_sysjoystick.c')
-rw-r--r-- | distrib/sdl-1.2.12/src/joystick/amigaos/SDL_sysjoystick.c | 233 |
1 files changed, 0 insertions, 233 deletions
diff --git a/distrib/sdl-1.2.12/src/joystick/amigaos/SDL_sysjoystick.c b/distrib/sdl-1.2.12/src/joystick/amigaos/SDL_sysjoystick.c deleted file mode 100644 index 35e4ebe..0000000 --- a/distrib/sdl-1.2.12/src/joystick/amigaos/SDL_sysjoystick.c +++ /dev/null @@ -1,233 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_JOYSTICK_AMIGA - -/* This is the system specific header for the SDL joystick API */ - -#include <libraries/lowlevel.h> -#if defined(__SASC) || defined(STORMC4_WOS) -#include <proto/exec.h> -#include <proto/lowlevel.h> -#include <proto/graphics.h> -#else -#include <inline/exec.h> -#include <inline/lowlevel.h> -#include <inline/graphics.h> -#endif -#include "mydebug.h" - -extern struct ExecBase *SysBase; -extern struct GfxBase *GfxBase; - -#include "SDL_joystick.h" -#include "../SDL_sysjoystick.h" -#include "../SDL_joystick_c.h" - -/* Function to scan the system for joysticks. - * This function should set SDL_numjoysticks to the number of available - * joysticks. Joystick 0 should be the system default joystick. - * It should return 0, or -1 on an unrecoverable fatal error. - */ - - -/* Amiga specific datas */ -struct Library *LowLevelBase=NULL; - -ULONG joybut[]= -{ - JPF_BUTTON_RED, - JPF_BUTTON_BLUE, - JPF_BUTTON_PLAY, - JPF_BUTTON_YELLOW, - JPF_BUTTON_GREEN, - JPF_BUTTON_FORWARD, - JPF_BUTTON_REVERSE, -}; - -struct joystick_hwdata -{ - ULONG joystate; -}; - -int SDL_SYS_JoystickInit(void) -{ - if(!LowLevelBase) - { - if(LowLevelBase=OpenLibrary("lowlevel.library",37)) - return 2; - } - else - return 2; - - D(bug("%ld joysticks available.\n",SDL_numjoysticks)); - - return 0; -} - -/* Function to get the device-dependent name of a joystick */ -const char *SDL_SYS_JoystickName(int index) -{ - if(index<2&&LowLevelBase) - { - switch(index) - { - case 0: - return "Port 1 Amiga Joystick/Joypad"; - case 1: - return "Port 2 Amiga Joystick/Joypad"; - } - } - - SDL_SetError("No joystick available with that index"); - return(NULL); -} - -/* Function to open a joystick for use. - The joystick to open is specified by the index field of the joystick. - This should fill the nbuttons and naxes fields of the joystick structure. - It returns 0, or -1 if there is an error. - */ - -int SDL_SYS_JoystickOpen(SDL_Joystick *joystick) -{ - ULONG temp,i; - D(bug("Opening joystick %ld\n",joystick->index)); - - if(!(joystick->hwdata=SDL_malloc(sizeof(struct joystick_hwdata)))) - return -1; - -/* This loop is to check if the controller is a joypad */ - - for(i=0;i<20;i++) - { - temp=ReadJoyPort(joystick->index^1); // fix to invert amiga joyports - WaitTOF(); - } - - if((temp&JP_TYPE_MASK)==JP_TYPE_GAMECTLR) - joystick->nbuttons=7; - else - joystick->nbuttons=3; - - joystick->nhats=0; - joystick->nballs=0; - joystick->naxes=2; - joystick->hwdata->joystate=0L; - - return 0; -} - -/* Function to update the state of a joystick - called as a device poll. - * This function shouldn't update the joystick structure directly, - * but instead should call SDL_PrivateJoystick*() to deliver events - * and update joystick device state. - */ -void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick) -{ - ULONG data; - int i; - - if(joystick->index<2) - { - data=ReadJoyPort(joystick->index); - - if(data&JP_DIRECTION_MASK) - { - if(data&JPF_JOY_DOWN) - { - if(!(joystick->hwdata->joystate&JPF_JOY_DOWN)) - SDL_PrivateJoystickAxis(joystick,0,127); - } - else if(data&JPF_JOY_UP) - { - if(!(joystick->hwdata->joystate&JPF_JOY_UP)) - SDL_PrivateJoystickAxis(joystick,0,-127); - } - else if(joystick->hwdata->joystate&(JPF_JOY_UP|JPF_JOY_DOWN)) - SDL_PrivateJoystickAxis(joystick,0,0); - - if(data&JPF_JOY_LEFT) - { - if(!(joystick->hwdata->joystate&JPF_JOY_LEFT)) - SDL_PrivateJoystickAxis(joystick,1,-127); - } - else if(data&JPF_JOY_RIGHT) - { - if(!(joystick->hwdata->joystate&JPF_JOY_RIGHT)) - SDL_PrivateJoystickAxis(joystick,1,127); - } - else if(joystick->hwdata->joystate&(JPF_JOY_LEFT|JPF_JOY_RIGHT)) - SDL_PrivateJoystickAxis(joystick,1,0); - } - else if(joystick->hwdata->joystate&(JPF_JOY_LEFT|JPF_JOY_RIGHT)) - { - SDL_PrivateJoystickAxis(joystick,1,0); - } - else if(joystick->hwdata->joystate&(JPF_JOY_UP|JPF_JOY_DOWN)) - { - SDL_PrivateJoystickAxis(joystick,0,0); - } - - for(i=0;i<joystick->nbuttons;i++) - { - if( (data&joybut[i]) ) - { - if(i==1) - data&=(~(joybut[2])); - - if(!(joystick->hwdata->joystate&joybut[i])) - SDL_PrivateJoystickButton(joystick,i,SDL_PRESSED); - } - else if(joystick->hwdata->joystate&joybut[i]) - SDL_PrivateJoystickButton(joystick,i,SDL_RELEASED); - } - - joystick->hwdata->joystate=data; - } - - return; -} - -/* Function to close a joystick after use */ -void SDL_SYS_JoystickClose(SDL_Joystick *joystick) -{ - if(joystick->hwdata) - SDL_free(joystick->hwdata); - return; -} - -/* Function to perform any system-specific joystick related cleanup */ - -void SDL_SYS_JoystickQuit(void) -{ - if(LowLevelBase) - { - CloseLibrary(LowLevelBase); - LowLevelBase=NULL; - SDL_numjoysticks=0; - } - return; -} - -#endif /* SDL_JOYSTICK_AMIGA */ |