bsnes/qt/input/controller.hpp

113 lines
2.8 KiB
C++

struct ControllerPort1 { enum { None, Gamepad, Asciipad, Multitap, Mouse }; };
struct ControllerPort2 { enum { None, Gamepad, Asciipad, Multitap, Mouse, SuperScope, Justifier, Justifiers }; };
namespace Controllers {
struct TurboInput : DigitalInput {
unsigned holdHi;
unsigned holdLo;
unsigned counter;
void cache();
TurboInput(const char*, const char*);
};
struct Gamepad : InputGroup {
DigitalInput up, down, left, right, b, a, y, x, l, r, select, start;
TurboInput turboB, turboA, turboY, turboX, turboL, turboR;
int16_t status(unsigned, unsigned) const;
Gamepad(unsigned, const char*, const char*);
};
struct Multitap : InputGroup {
Gamepad &port1, &port2, &port3, &port4;
int16_t status(unsigned, unsigned) const;
Multitap(Gamepad&, Gamepad&, Gamepad&, Gamepad&);
};
struct AsciiSwitch : DigitalInput {
enum Mode { Off, Turbo, Auto } mode;
void poll();
AsciiSwitch(const char*, const char*);
};
struct AsciiSlowMotion : DigitalInput {
bool enabled;
unsigned holdHi;
unsigned holdLo;
unsigned counter;
void poll();
void cache();
AsciiSlowMotion(const char*, const char*);
};
struct AsciiInput : DigitalInput {
AsciiSwitch *asciiSwitch;
unsigned holdHi;
unsigned holdLo;
unsigned counter;
void cache();
AsciiInput(const char*, const char*);
};
struct Asciipad : InputGroup {
DigitalInput up, down, left, right;
AsciiInput b, a, y, x, l, r;
DigitalInput select, start;
AsciiSwitch switchB, switchA, switchY, switchX, switchL, switchR;
AsciiSlowMotion slowMotion;
int16_t status(unsigned, unsigned) const;
Asciipad(unsigned, const char*, const char*);
};
struct Mouse : InputGroup {
AnalogInput x, y;
DigitalInput left, right;
int16_t status(unsigned, unsigned) const;
Mouse(unsigned, const char*, const char*);
};
struct SuperScope : InputGroup {
AnalogInput x, y;
DigitalInput trigger, cursor, turbo, pause;
int16_t status(unsigned, unsigned) const;
SuperScope(unsigned, const char*, const char*);
};
struct Justifier : InputGroup {
AnalogInput x, y;
DigitalInput trigger, start;
int16_t status(unsigned, unsigned) const;
Justifier(unsigned, const char*, const char*);
};
struct Justifiers : InputGroup {
Justifier &port1;
Justifier &port2;
int16_t status(unsigned, unsigned) const;
Justifiers(Justifier&, Justifier&);
};
extern Gamepad gamepad1;
extern Asciipad asciipad1;
extern Gamepad multitap1a;
extern Gamepad multitap1b;
extern Gamepad multitap1c;
extern Gamepad multitap1d;
extern Multitap multitap1;
extern Mouse mouse1;
extern Gamepad gamepad2;
extern Asciipad asciipad2;
extern Gamepad multitap2a;
extern Gamepad multitap2b;
extern Gamepad multitap2c;
extern Gamepad multitap2d;
extern Multitap multitap2;
extern Mouse mouse2;
extern SuperScope superscope;
extern Justifier justifier1;
extern Justifier justifier2;
extern Justifiers justifiers;
}