mirror of
https://github.com/rodamaral/lsnes.git
synced 2025-04-02 10:42:15 -04:00
184 lines
5.3 KiB
C++
Executable file
184 lines
5.3 KiB
C++
Executable file
int16_t SnesGamepad::poll(unsigned n) {
|
|
switch((SNES::Input::JoypadID)n) {
|
|
case SNES::Input::JoypadID::Up: return up.poll() & !down.poll();
|
|
case SNES::Input::JoypadID::Down: return down.poll() & !up.poll();
|
|
case SNES::Input::JoypadID::Left: return left.poll() & !right.poll();
|
|
case SNES::Input::JoypadID::Right: return right.poll() & !left.poll();
|
|
case SNES::Input::JoypadID::B: return b.poll() | bTurbo.poll();
|
|
case SNES::Input::JoypadID::A: return a.poll() | aTurbo.poll();
|
|
case SNES::Input::JoypadID::Y: return y.poll() | yTurbo.poll();
|
|
case SNES::Input::JoypadID::X: return x.poll() | xTurbo.poll();
|
|
case SNES::Input::JoypadID::L: return l.poll() | lTurbo.poll();
|
|
case SNES::Input::JoypadID::R: return r.poll() | rTurbo.poll();
|
|
case SNES::Input::JoypadID::Select: return select.poll();
|
|
case SNES::Input::JoypadID::Start: return start.poll();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
SnesGamepad::SnesGamepad(const string &name, bool defaultBindings) {
|
|
this->name = name;
|
|
|
|
up.name = "Up", down.name = "Down", left.name = "Left", right.name = "Right";
|
|
b.name = "B", a.name = "A", y.name = "Y", x.name = "X";
|
|
l.name = "L", r.name = "R", select.name = "Select", start.name = "Start";
|
|
bTurbo.name = "Turbo B", aTurbo.name = "Turbo A", yTurbo.name = "Turbo Y", xTurbo.name = "Turbo X";
|
|
lTurbo.name = "Turbo L", rTurbo.name = "Turbo R";
|
|
|
|
if(defaultBindings) {
|
|
up.mapping = "KB0::Up";
|
|
down.mapping = "KB0::Down";
|
|
left.mapping = "KB0::Left";
|
|
right.mapping = "KB0::Right";
|
|
b.mapping = "KB0::Z";
|
|
a.mapping = "KB0::X";
|
|
y.mapping = "KB0::A";
|
|
x.mapping = "KB0::S";
|
|
l.mapping = "KB0::D";
|
|
r.mapping = "KB0::C";
|
|
select.mapping = "KB0::Apostrophe";
|
|
start.mapping = "KB0::Return";
|
|
}
|
|
|
|
append(up, down, left, right, b, a, y, x, l, r, select, start);
|
|
append(bTurbo, aTurbo, yTurbo, xTurbo, lTurbo, rTurbo);
|
|
}
|
|
|
|
//
|
|
|
|
int16_t SnesMouse::poll(unsigned n) {
|
|
switch((SNES::Input::MouseID)n) {
|
|
case SNES::Input::MouseID::X: return xaxis.poll();
|
|
case SNES::Input::MouseID::Y: return yaxis.poll();
|
|
case SNES::Input::MouseID::Left: return left.poll();
|
|
case SNES::Input::MouseID::Right: return right.poll();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
SnesMouse::SnesMouse(const string &name, bool defaultBindings) {
|
|
this->name = name;
|
|
|
|
xaxis.name = "X-axis", yaxis.name = "Y-axis";
|
|
left.name = "Left button", right.name = "Right button";
|
|
|
|
if(defaultBindings) {
|
|
xaxis.mapping = "MS0::Xaxis";
|
|
yaxis.mapping = "MS0::Yaxis";
|
|
left.mapping = "MS0::Button0";
|
|
right.mapping = "MS0::Button2";
|
|
}
|
|
|
|
append(xaxis, yaxis, left, right);
|
|
}
|
|
|
|
//
|
|
|
|
int16_t SnesSuperScope::poll(unsigned n) {
|
|
switch((SNES::Input::SuperScopeID)n) {
|
|
case SNES::Input::SuperScopeID::X: return xaxis.poll();
|
|
case SNES::Input::SuperScopeID::Y: return yaxis.poll();
|
|
case SNES::Input::SuperScopeID::Trigger: return trigger.poll();
|
|
case SNES::Input::SuperScopeID::Cursor: return cursor.poll();
|
|
case SNES::Input::SuperScopeID::Turbo: return turbo.poll();
|
|
case SNES::Input::SuperScopeID::Pause: return pause.poll();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
SnesSuperScope::SnesSuperScope(const string &name, bool defaultBindings) {
|
|
this->name = name;
|
|
|
|
xaxis.name = "X-axis", yaxis.name = "Y-axis";
|
|
trigger.name = "Trigger", cursor.name = "Cursor", turbo.name = "Turbo", pause.name = "Pause";
|
|
|
|
if(defaultBindings) {
|
|
xaxis.mapping = "MS0::Xaxis";
|
|
yaxis.mapping = "MS0::Yaxis";
|
|
trigger.mapping = "MS0::Button0";
|
|
cursor.mapping = "MS0::Button2";
|
|
turbo.mapping = "KB0::T";
|
|
pause.mapping = "KB0::P";
|
|
}
|
|
|
|
append(xaxis, yaxis, trigger, cursor, turbo, pause);
|
|
}
|
|
|
|
//
|
|
|
|
int16_t SnesJustifier::poll(unsigned n) {
|
|
switch((SNES::Input::JustifierID)n) {
|
|
case SNES::Input::JustifierID::X: return xaxis.poll();
|
|
case SNES::Input::JustifierID::Y: return yaxis.poll();
|
|
case SNES::Input::JustifierID::Trigger: return trigger.poll();
|
|
case SNES::Input::JustifierID::Start: return start.poll();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
SnesJustifier::SnesJustifier(const string &name, bool defaultBindings) {
|
|
this->name = name;
|
|
|
|
xaxis.name = "X-axis", yaxis.name = "Y-axis";
|
|
trigger.name = "Trigger", start.name = "Start";
|
|
|
|
if(defaultBindings) {
|
|
xaxis.mapping = "MS0::Xaxis";
|
|
yaxis.mapping = "MS0::Yaxis";
|
|
trigger.mapping = "MS0::Button0";
|
|
start.mapping = "MS0::Button2";
|
|
}
|
|
|
|
append(xaxis, yaxis, trigger, start);
|
|
}
|
|
|
|
//
|
|
|
|
SnesPort1Input::SnesPort1Input():
|
|
gamepad("Gamepad", true),
|
|
multitap1("Multitap - Port 1", false),
|
|
multitap2("Multitap - Port 2", false),
|
|
multitap3("Multitap - Port 3", false),
|
|
multitap4("Multitap - Port 4", false),
|
|
mouse("Mouse", true)
|
|
{
|
|
name = "Controller Port 1";
|
|
append(gamepad);
|
|
append(multitap1);
|
|
append(multitap2);
|
|
append(multitap3);
|
|
append(multitap4);
|
|
append(mouse);
|
|
}
|
|
|
|
//
|
|
|
|
SnesPort2Input::SnesPort2Input():
|
|
gamepad("Gamepad", false),
|
|
multitap1("Multitap - Port 1", false),
|
|
multitap2("Multitap - Port 2", false),
|
|
multitap3("Multitap - Port 3", false),
|
|
multitap4("Multitap - Port 4", false),
|
|
mouse("Mouse", true),
|
|
superScope("Super Scope", true),
|
|
justifier1("Justifier - Port 1", true),
|
|
justifier2("Justifier - Port 2", false)
|
|
{
|
|
name = "Controller Port 2";
|
|
append(gamepad);
|
|
append(multitap1);
|
|
append(multitap2);
|
|
append(multitap3);
|
|
append(multitap4);
|
|
append(mouse);
|
|
append(superScope);
|
|
append(justifier1);
|
|
append(justifier2);
|
|
}
|
|
|
|
//
|
|
|
|
SnesInput::SnesInput() {
|
|
name = "SNES";
|
|
append(port1, port2);
|
|
}
|