mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-26 15:55:31 +01:00
Recordings store information about which Wiimotes are actually in use. (Slight modification to a patch by Toad King.)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7132 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
b0fa0a83f8
commit
caad098b69
@ -4,6 +4,7 @@
|
|||||||
#include "Wiimote.h"
|
#include "Wiimote.h"
|
||||||
#include "WiimoteReal/WiimoteReal.h"
|
#include "WiimoteReal/WiimoteReal.h"
|
||||||
#include "WiimoteEmu/WiimoteEmu.h"
|
#include "WiimoteEmu/WiimoteEmu.h"
|
||||||
|
#include "OnFrame.h"
|
||||||
|
|
||||||
#include "ControllerInterface/ControllerInterface.h"
|
#include "ControllerInterface/ControllerInterface.h"
|
||||||
|
|
||||||
@ -46,6 +47,9 @@ void Initialize(void* const hwnd)
|
|||||||
g_plugin.LoadConfig();
|
g_plugin.LoadConfig();
|
||||||
|
|
||||||
WiimoteReal::Initialize();
|
WiimoteReal::Initialize();
|
||||||
|
|
||||||
|
if (Frame::IsPlayingInput()) // reload Wiimotes with our settings
|
||||||
|
Frame::ChangeWiiPads();
|
||||||
}
|
}
|
||||||
|
|
||||||
// __________________________________________________________________________________________________
|
// __________________________________________________________________________________________________
|
||||||
@ -100,7 +104,7 @@ void Update(int _number)
|
|||||||
}
|
}
|
||||||
_last_number = _number;
|
_last_number = _number;
|
||||||
|
|
||||||
if (WIIMOTE_SRC_EMU & g_wiimote_sources[_number])
|
if ((Frame::IsPlayingInput() && Frame::IsUsingWiimote(_number)) || (!Frame::IsPlayingInput() && (WIIMOTE_SRC_EMU & g_wiimote_sources[_number])))
|
||||||
((WiimoteEmu::Wiimote*)g_plugin.controllers[_number])->Update();
|
((WiimoteEmu::Wiimote*)g_plugin.controllers[_number])->Update();
|
||||||
else
|
else
|
||||||
WiimoteReal::Update(_number);
|
WiimoteReal::Update(_number);
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
#include "FileUtil.h"
|
#include "FileUtil.h"
|
||||||
#include "PowerPC/PowerPC.h"
|
#include "PowerPC/PowerPC.h"
|
||||||
#include "HW/SI.h"
|
#include "HW/SI.h"
|
||||||
|
#include "HW/Wiimote.h"
|
||||||
|
#include "IPC_HLE/WII_IPC_HLE_Device_usb.h"
|
||||||
#include "VideoBackendBase.h"
|
#include "VideoBackendBase.h"
|
||||||
|
|
||||||
Common::CriticalSection cs_frameSkip;
|
Common::CriticalSection cs_frameSkip;
|
||||||
@ -130,28 +132,27 @@ bool IsPlayingInput()
|
|||||||
|
|
||||||
bool IsUsingPad(int controller)
|
bool IsUsingPad(int controller)
|
||||||
{
|
{
|
||||||
switch (controller)
|
return (g_numPads & (1 << controller));
|
||||||
{
|
}
|
||||||
case 0:
|
|
||||||
return (g_numPads & 0x01) != 0;
|
bool IsUsingWiimote(int wiimote)
|
||||||
case 1:
|
{
|
||||||
return (g_numPads & 0x02) != 0;
|
return (g_numPads & (1 << (wiimote + 4)));
|
||||||
case 2:
|
|
||||||
return (g_numPads & 0x04) != 0;
|
|
||||||
case 3:
|
|
||||||
return (g_numPads & 0x08) != 0;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangePads()
|
void ChangePads()
|
||||||
{
|
{
|
||||||
if (Core::GetState() != Core::CORE_UNINITIALIZED) {
|
if (Core::GetState() != Core::CORE_UNINITIALIZED)
|
||||||
SerialInterface::ChangeDevice(IsUsingPad(0) ? SI_GC_CONTROLLER : SI_NONE, 0);
|
for (int i = 0; i < 4; i++)
|
||||||
SerialInterface::ChangeDevice(IsUsingPad(1) ? SI_GC_CONTROLLER : SI_NONE, 1);
|
SerialInterface::ChangeDevice(IsUsingPad(i) ? SI_GC_CONTROLLER : SI_NONE, i);
|
||||||
SerialInterface::ChangeDevice(IsUsingPad(2) ? SI_GC_CONTROLLER : SI_NONE, 2);
|
}
|
||||||
SerialInterface::ChangeDevice(IsUsingPad(3) ? SI_GC_CONTROLLER : SI_NONE, 3);
|
|
||||||
|
void ChangeWiiPads()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
g_wiimote_sources[i] = IsUsingWiimote(i) ? WIIMOTE_SRC_EMU : WIIMOTE_SRC_NONE;
|
||||||
|
GetUsbPointer()->AccessWiiMote(i | 0x100)->Activate(IsUsingWiimote(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,6 +302,7 @@ void LoadInput(const char *filename)
|
|||||||
g_numPads = header.numControllers;
|
g_numPads = header.numControllers;
|
||||||
|
|
||||||
ChangePads();
|
ChangePads();
|
||||||
|
ChangeWiiPads();
|
||||||
|
|
||||||
if (g_recordfd)
|
if (g_recordfd)
|
||||||
fclose(g_recordfd);
|
fclose(g_recordfd);
|
||||||
|
@ -99,7 +99,9 @@ bool IsRecordingInput();
|
|||||||
bool IsPlayingInput();
|
bool IsPlayingInput();
|
||||||
|
|
||||||
bool IsUsingPad(int controller);
|
bool IsUsingPad(int controller);
|
||||||
|
bool IsUsingWiimote(int wiimote);
|
||||||
void ChangePads();
|
void ChangePads();
|
||||||
|
void ChangeWiiPads();
|
||||||
|
|
||||||
void SetFrameStepping(bool bEnabled);
|
void SetFrameStepping(bool bEnabled);
|
||||||
void SetFrameStopping(bool bEnabled);
|
void SetFrameStopping(bool bEnabled);
|
||||||
|
@ -647,14 +647,13 @@ void CFrame::OnRecord(wxCommandEvent& WXUNUSED (event))
|
|||||||
{
|
{
|
||||||
int controllers = 0;
|
int controllers = 0;
|
||||||
|
|
||||||
if (SConfig::GetInstance().m_SIDevice[0] == SI_GC_CONTROLLER)
|
for (int i = 0; i < 4; i++) {
|
||||||
controllers |= 0x01;
|
if (SConfig::GetInstance().m_SIDevice[i] == SI_GC_CONTROLLER)
|
||||||
if (SConfig::GetInstance().m_SIDevice[1] == SI_GC_CONTROLLER)
|
controllers |= (1 << i);
|
||||||
controllers |= 0x02;
|
|
||||||
if (SConfig::GetInstance().m_SIDevice[2] == SI_GC_CONTROLLER)
|
if (g_wiimote_sources[i] != WIIMOTE_SRC_NONE)
|
||||||
controllers |= 0x04;
|
controllers |= (1 << (i + 4));
|
||||||
if (SConfig::GetInstance().m_SIDevice[3] == SI_GC_CONTROLLER)
|
}
|
||||||
controllers |= 0x08;
|
|
||||||
|
|
||||||
if(Frame::BeginRecordingInput(controllers))
|
if(Frame::BeginRecordingInput(controllers))
|
||||||
BootGame(std::string(""));
|
BootGame(std::string(""));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user