mirror of https://github.com/bsnes-emu/bsnes.git
113 lines
2.8 KiB
C++
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;
|
|
|
|
}
|