InputCommon(GCPad/WiimoteNew): Fixed issue when inifile didn't exist, defaults were loaded, and input didn't work. Fixed prob in DirectInput(hopefully doesn't break any other gamepads): buffered data wasn't ever being used. WiimoteNew: Hopefully made emulated swinging better(please comment). Added (completely untested) incomplete emulated turntable(DJ Hero) extension support :p. Deleted some files that I meant to delete in my last commit.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6250 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Jordan Woyak
2010-10-03 04:29:34 +00:00
parent 841583b8f3
commit aae0fa7909
12 changed files with 224 additions and 142 deletions

View File

@ -262,22 +262,10 @@ public:
const float state = controls[i+1]->control_ref->State() - controls[i]->control_ref->State();
if (fabsf(state) > deadzone)
tmpf = ((state - (deadzone * sign(state))) / (1 - deadzone));
else
tmpf = 0;
float &ax = m_swing[i >> 1];
if (fabs(tmpf) > fabsf(ax))
{
if (tmpf > ax)
ax = std::min(ax + 0.15f, tmpf);
else if (tmpf < ax)
ax = std::max(ax - 0.15f, tmpf);
}
else
ax = tmpf;
*axis++ = (C)(ax * range + base);
*axis++ = (C)((tmpf - ax) * range + base);
ax = tmpf;
}
}
private:

View File

@ -206,9 +206,6 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI
, m_index(index)
//, m_name(TStringToString(lpddi->tszInstanceName))
{
// this needs to be done before GetCapabilities() maybe?
m_device->Acquire();
// get joystick caps
DIDEVCAPS js_caps;
js_caps.dwSize = sizeof(js_caps);
@ -270,6 +267,9 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI
}
}
// it seems this needs to be done after SetProperty...
m_device->Acquire();
// TODO: check for DIDC_FORCEFEEDBACK in devcaps?
// get supported ff effects
@ -395,8 +395,6 @@ bool Joystick::UpdateInput()
// msdn says if this isn't needed it doesnt do anything
m_device->Poll();
bool need_ = true;
if (m_buffered)
{
DIDEVICEOBJECTDATA evtbuf[DATA_BUFFER_SIZE];
@ -415,9 +413,7 @@ bool Joystick::UpdateInput()
((BYTE*)&m_state_in)[evt->dwOfs] = (BYTE)evt->dwData;
}
// we lost some data, attempt to use GetDeviceState
// maybe this isn't the best thing to do
// maybe I should clear the input state?
// seems like this needs to be done maybe...
if (DI_BUFFEROVERFLOW == hr)
hr = m_device->GetDeviceState(sizeof(m_state_in), &m_state_in);
}

View File

@ -42,24 +42,26 @@ InputPlugin::~InputPlugin()
bool InputPlugin::LoadConfig()
{
IniFile inifile;
if (false == inifile.Load(std::string(File::GetUserPath(D_CONFIG_IDX)) + ini_name + ".ini"))
if (inifile.Load(std::string(File::GetUserPath(D_CONFIG_IDX)) + ini_name + ".ini"))
{
std::vector< ControllerEmu* >::const_iterator
i = controllers.begin(),
e = controllers.end();
for (; i!=e; ++i)
{
// load settings from ini
(*i)->LoadConfig(inifile.GetOrCreateSection((*i)->GetName().c_str()));
// update refs
(*i)->UpdateReferences(controller_interface);
}
return true;
}
else
{
controllers[0]->LoadDefaults(controller_interface);
controllers[0]->UpdateReferences(controller_interface);
return false;
}
std::vector< ControllerEmu* >::const_iterator
i = controllers.begin(),
e = controllers.end();
for ( ; i!=e; ++i )
{
// load settings from ini
(*i)->LoadConfig(inifile.GetOrCreateSection((*i)->GetName().c_str()));
// update refs
(*i)->UpdateReferences(controller_interface);
}
return true;
}
void InputPlugin::SaveConfig()