InputCommon(GCPad/WiimoteNew): Fixed issue when inifile didn't exist, defaults were...
[dolphin.git] / Source / Plugins / Plugin_WiimoteNew / Src / WiimoteEmu / Attachment / Turntable.cpp
blobe107ba6e83d1eb01e4c6e24f6fb750aca7e804ff
1 #include "Turntable.h"
4 namespace WiimoteEmu
7 static const u8 turntable_id[] = {0x03, 0x00, 0xa4, 0x20, 0x01, 0x03};
9 static const u16 turntable_button_bitmasks[] =
11 Turntable::BUTTON_L_GREEN,
12 Turntable::BUTTON_L_RED,
13 Turntable::BUTTON_L_BLUE,
14 Turntable::BUTTON_R_GREEN,
15 Turntable::BUTTON_R_RED,
16 Turntable::BUTTON_R_BLUE,
17 Turntable::BUTTON_MINUS,
18 Turntable::BUTTON_PLUS,
19 Turntable::BUTTON_EUPHORIA,
22 static const char* const turntable_button_names[] =
24 "Green Left", "Red Left", "Blue Left",
25 "Green Right", "Red Right", "Blue Right",
26 "-", "+", "Euphoria",
29 Turntable::Turntable() : Attachment("Turntable")
31 // buttons
32 // TODO: separate buttons into Left and Right
33 groups.push_back(m_buttons = new Buttons("Buttons"));
34 for (unsigned int i = 0; i < sizeof(turntable_button_names)/sizeof(*turntable_button_names); ++i)
35 m_buttons->controls.push_back(new ControlGroup::Input( turntable_button_names[i]));
37 // stick
38 groups.push_back(m_stick = new AnalogStick("Stick"));
40 // TODO:
41 groups.push_back(m_effect_dial = new Triggers("Effect"));
42 m_effect_dial->controls.push_back(new ControlGroup::Input("Dial"));
44 //m_left_turntable
45 //m_right_turntable
46 //m_crossfade_slider
48 // set up register
49 // id
50 memcpy(&reg[0xfa], turntable_id, sizeof(turntable_id));
53 void Turntable::GetState(u8* const data, const bool focus)
55 wm_turntable_extension* const ttdata = (wm_turntable_extension*)data;
56 ttdata->bt = 0;
58 // stick
60 u8 x, y;
61 m_stick->GetState(&x, &y, 0x20, focus ? 0x1F /*0x15*/ : 0);
63 ttdata->sx = x;
64 ttdata->sy = y;
67 // left table
68 // TODO:
70 s8 tt = 0;
71 //m_left_turntable->GetState(&tt .....);
73 ttdata->ltable1 = tt;
74 ttdata->ltable2 = tt << 5;
77 // right table
78 // TODO:
80 s8 tt = 0;
81 //m_right_turntable->GetState(&tt .....);
83 ttdata->rtable1 = tt;
84 ttdata->rtable2 = tt << 1;
85 ttdata->rtable3 = tt << 3;
86 ttdata->rtable4 = tt << 5;
89 // effect dial
91 u8 dial = 0;
92 m_effect_dial->GetState(&dial, focus ? 0xF : 0);
94 ttdata->dial1 = dial;
95 ttdata->dial2 = dial << 3;
98 // crossfade slider
99 // TODO:
101 u8 cfs = 0;
102 //m_crossfade_slider->GetState(&cfs .....);
104 ttdata->slider = cfs;
107 if (focus)
109 // buttons
110 m_buttons->GetState(&ttdata->bt, turntable_button_bitmasks);
113 // flip button bits :/
114 ttdata->bt ^= (
115 BUTTON_L_GREEN | BUTTON_L_RED | BUTTON_L_BLUE |
116 BUTTON_R_GREEN | BUTTON_R_RED | BUTTON_R_BLUE |
117 BUTTON_MINUS | BUTTON_PLUS | BUTTON_EUPHORIA