mirror of https://github.com/bsnes-emu/bsnes.git
56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
|
Peripherals peripherals;
|
||
|
|
||
|
auto Peripherals::unload() -> void {
|
||
|
delete controllerPort1;
|
||
|
delete controllerPort2;
|
||
|
delete extensionPort;
|
||
|
controllerPort1 = nullptr;
|
||
|
controllerPort2 = nullptr;
|
||
|
extensionPort = nullptr;
|
||
|
}
|
||
|
|
||
|
auto Peripherals::reset() -> void {
|
||
|
connect(ID::Port::Controller1, settings.controllerPort1);
|
||
|
connect(ID::Port::Controller2, settings.controllerPort2);
|
||
|
connect(ID::Port::Extension, settings.extensionPort);
|
||
|
}
|
||
|
|
||
|
auto Peripherals::connect(uint port, uint device) -> void {
|
||
|
if(port == ID::Port::Controller1) {
|
||
|
settings.controllerPort1 = device;
|
||
|
if(!system.loaded()) return;
|
||
|
|
||
|
delete controllerPort1;
|
||
|
switch(device) { default:
|
||
|
case ID::Device::None: controllerPort1 = new Controller(0); break;
|
||
|
case ID::Device::Gamepad: controllerPort1 = new Gamepad(0); break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(port == ID::Port::Controller2) {
|
||
|
settings.controllerPort2 = device;
|
||
|
if(!system.loaded()) return;
|
||
|
|
||
|
delete controllerPort2;
|
||
|
switch(device) { default:
|
||
|
case ID::Device::None: controllerPort2 = new Controller(1); break;
|
||
|
case ID::Device::Gamepad: controllerPort2 = new Gamepad(1); break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(port == ID::Port::Extension) {
|
||
|
settings.extensionPort = device;
|
||
|
if(!system.loaded()) return;
|
||
|
|
||
|
delete extensionPort;
|
||
|
switch(device) { default:
|
||
|
case ID::Device::None: extensionPort = new Controller(2); break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
cpu.peripherals.reset();
|
||
|
cpu.peripherals.append(controllerPort1);
|
||
|
cpu.peripherals.append(controllerPort2);
|
||
|
cpu.peripherals.append(extensionPort);
|
||
|
}
|