home *** CD-ROM | disk | FTP | other *** search
- //////////////////////////////////////////////////////////////////////////////
- //
- // This file is part of the Atari Machine Specific Library,
- // and is Copyright 1992 by Warwick W. Allison.
- //
- // You are free to copy and modify these sources, provided you acknoledge
- // the origin by retaining this notice, and adhere to the conditions
- // described in the file COPYING.
- //
- //////////////////////////////////////////////////////////////////////////////
-
- #ifndef _Joystick_h
- #define _Joystick_h
- //////////////////////////////////////////////////////////////
- //
- // Support for direct Joystick access.
- // Both joysticks are available, and can be accessed
- // in a variety of ways.
- //
- //////////////////////////////////////////////////////////////
- #include <bool.h>
-
- enum JoystickDirection { J_0, J_U, J_D, J_UD, J_L, J_UL, J_DL, J_UDL,
- J_R, J_UR, J_DR, J_UDR, J_LR, J_ULR, J_DLR, J_UDLR };
-
- class Joystick
- {
- public:
- Joystick(int port=1);
- ~Joystick();
-
- JoystickDirection Way();
-
- bool Passive();
- bool Up();
- bool Down();
- bool Left();
- bool Right();
-
- // NOTE: Trigger 1 only works if joystick 0 is being used,
- // otherwise it is diverted as RightButton of the mouse.
- // (Blame Atari)
- //
- bool Trigger();
-
- // -1, 0, or +1 interpretation of joystick
- int x();
- int y();
-
- private:
- volatile int (*Flags);
- };
-
-
- // Below is private
-
-
- inline JoystickDirection Joystick::Way() { return *Flags&J_UDLR; }
-
- inline bool Joystick::Passive() { return !*Flags; }
- inline bool Joystick::Up() { return !!(*Flags&J_U); }
- inline bool Joystick::Down() { return !!(*Flags&J_D); }
- inline bool Joystick::Left() { return !!(*Flags&J_L); }
- inline bool Joystick::Right() { return !!(*Flags&J_R); }
-
- inline bool Joystick::Trigger() { return !!(*Flags&128); }
-
- extern int XDif[16];
- extern int YDif[16];
-
- inline int Joystick::x() { return XDif[Way()]; }
- inline int Joystick::y() { return YDif[Way()]; }
-
-
- #endif
-