Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/snes/system/input.cpp
2 views
1
#ifdef SYSTEM_CPP
2
3
Input input;
4
5
void Input::connect(bool port, Input::Device id) {
6
Controller *&controller = (port == Controller::Port1 ? port1 : port2);
7
if(controller) {
8
delete controller;
9
controller = nullptr;
10
}
11
12
switch(id) { default:
13
case Device::None: controller = new Controller(port); break;
14
case Device::Joypad: controller = new Gamepad(port); break;
15
case Device::Multitap: controller = new Multitap(port); break;
16
case Device::Mouse: controller = new Mouse(port); break;
17
case Device::SuperScope: controller = new SuperScope(port); break;
18
case Device::Justifier: controller = new Justifier(port, false); break;
19
case Device::Justifiers: controller = new Justifier(port, true); break;
20
case Device::USART: controller = new USART(port); break;
21
}
22
23
switch(port) {
24
case Controller::Port1: config.controller_port1 = id; break;
25
case Controller::Port2: config.controller_port2 = id; break;
26
}
27
}
28
29
void Input::serialize(serializer &s)
30
{
31
int p1, p2;
32
p1 = (int)config.controller_port1;
33
p2 = (int)config.controller_port2;
34
s.integer(p1);
35
s.integer(p2);
36
if(s.mode() == nall::serializer::Load) {
37
connect(Controller::Port1, (Device)p1);
38
connect(Controller::Port2, (Device)p2);
39
}
40
port1->serialize(s);
41
port2->serialize(s);
42
}
43
44
45
Input::Input() : port1(nullptr), port2(nullptr) {
46
connect(Controller::Port1, Input::Device::Joypad);
47
connect(Controller::Port2, Input::Device::Joypad);
48
}
49
50
Input::~Input() {
51
if(port1) delete port1;
52
if(port2) delete port2;
53
}
54
55
#endif
56
57