diff --git a/Source/Core/Core/DolphinAnalytics.cpp b/Source/Core/Core/DolphinAnalytics.cpp index 5f54420013..ebd855f2c4 100644 --- a/Source/Core/Core/DolphinAnalytics.cpp +++ b/Source/Core/Core/DolphinAnalytics.cpp @@ -137,8 +137,7 @@ void DolphinAnalytics::ReportGameStart() } // Keep in sync with enum class GameQuirk definition. -constexpr std::array GAME_QUIRKS_NAMES{ - "directly-reads-wiimote-input", +constexpr std::array GAME_QUIRKS_NAMES{ "uses-DVDLowStopLaser", "uses-DVDLowOffset", "uses-DVDLowReadDiskBca", diff --git a/Source/Core/Core/DolphinAnalytics.h b/Source/Core/Core/DolphinAnalytics.h index 83a5a45822..8fc23161a8 100644 --- a/Source/Core/Core/DolphinAnalytics.h +++ b/Source/Core/Core/DolphinAnalytics.h @@ -4,7 +4,6 @@ #pragma once #include -#include #include #include #include @@ -21,10 +20,6 @@ enum class GameQuirk { - // The Wii remote hardware makes it possible to bypass normal data reporting and directly - // "read" extension or IR data. This would break our current TAS/NetPlay implementation. - DIRECTLY_READS_WIIMOTE_INPUT = 0, - // Several Wii DI commands that are rarely/never used and not implemented by Dolphin USES_DVD_LOW_STOP_LASER, USES_DVD_LOW_OFFSET, diff --git a/Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp b/Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp index 9d354a4b8e..7c3202cc0b 100644 --- a/Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp @@ -4,22 +4,19 @@ #include "Core/HW/WiimoteEmu/WiimoteEmu.h" #include -#include #include #include "Common/BitUtils.h" #include "Common/ChunkFile.h" #include "Common/CommonTypes.h" #include "Common/EnumUtils.h" -#include "Common/FileUtil.h" #include "Common/Logging/Log.h" #include "Common/MsgHandler.h" #include "Common/Swap.h" + #include "Core/Core.h" -#include "Core/DolphinAnalytics.h" #include "Core/HW/Wiimote.h" #include "Core/HW/WiimoteCommon/WiimoteHid.h" -#include "InputCommon/ControllerEmu/ControlGroup/Attachments.h" namespace WiimoteEmu { @@ -490,19 +487,6 @@ bool Wiimote::ProcessReadDataRequest() break; } - // It is possible to bypass data reporting and directly read extension input. - // While I am not aware of any games that actually do this, - // our NetPlay and TAS methods are completely unprepared for it. - const bool is_reading_ext = EncryptedExtension::I2C_ADDR == m_read_request.slave_address && - m_read_request.address < EncryptedExtension::CONTROLLER_DATA_BYTES; - const bool is_reading_ir = - CameraLogic::I2C_ADDR == m_read_request.slave_address && - m_read_request.address < CameraLogic::REPORT_DATA_OFFSET + CameraLogic::CAMERA_DATA_BYTES && - m_read_request.address + m_read_request.size > CameraLogic::REPORT_DATA_OFFSET; - - if (is_reading_ext || is_reading_ir) - DolphinAnalytics::Instance().ReportGameQuirk(GameQuirk::DIRECTLY_READS_WIIMOTE_INPUT); - // Top byte of address is ignored on the bus, but it IS maintained in the read-reply. auto const bytes_read = m_i2c_bus.BusRead( m_read_request.slave_address, (u8)m_read_request.address, bytes_to_read, reply.data); diff --git a/Source/Core/Core/HW/WiimoteEmu/Extension/Extension.cpp b/Source/Core/Core/HW/WiimoteEmu/Extension/Extension.cpp index fd2b185872..d733385dbb 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Extension/Extension.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Extension/Extension.cpp @@ -3,19 +3,14 @@ #include "Core/HW/WiimoteEmu/Extension/Extension.h" -#include -#include #include #include "Common/CommonTypes.h" -#include "Common/Inline.h" #include "Core/HW/Wiimote.h" #include "Core/HW/WiimoteEmu/Extension/DesiredExtensionState.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" -#include "Common/Logging/Log.h" - namespace WiimoteEmu { Extension::Extension(const char* name) : Extension(name, name) @@ -91,11 +86,9 @@ int EncryptedExtension::BusRead(u8 slave_addr, u8 addr, int count, u8* data_out) if (I2C_ADDR != slave_addr) return 0; - if (0x00 == addr) + if (offsetof(Register, controller_data) == addr) { // This is where real hardware would update controller data - // We do it in Update() for TAS determinism - // TAS code fails to sync data reads and such.. } auto const result = RawRead(&m_reg, addr, count, data_out);