diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index 9e8aeb7667..8ebdb0d783 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -2940,7 +2940,7 @@ void CEXISlippi::handleCompleteSet(const SlippiExiTypes::ReportSetCompletionQuer auto lastMatchId = recentMmResult.id; if (lastMatchId.find("mode.ranked") != std::string::npos) { - ERROR_LOG_FMT(SLIPPI_ONLINE, "Reporting set completion: {}", lastMatchId); + INFO_LOG_FMT(SLIPPI_ONLINE, "Reporting set completion: {}", lastMatchId); game_reporter->ReportCompletion(lastMatchId, query.endMode); } } diff --git a/Source/Core/Core/Slippi/SlippiGameReporter.cpp b/Source/Core/Core/Slippi/SlippiGameReporter.cpp index cc656f78f5..714b13acf9 100644 --- a/Source/Core/Core/Slippi/SlippiGameReporter.cpp +++ b/Source/Core/Core/Slippi/SlippiGameReporter.cpp @@ -1,15 +1,15 @@ #include "SlippiGameReporter.h" +#include "Common/Common.h" #include "Common/CommonPaths.h" #include "Common/FileUtil.h" #include "Common/Logging/Log.h" #include "Common/MsgHandler.h" #include "Common/StringUtil.h" #include "Common/Thread.h" - -#include "Common/Common.h" #include "Core/ConfigManager.h" #include "Core/Slippi/SlippiMatchmaking.h" +#include "VideoCommon/OnScreenDisplay.h" #include #include @@ -104,6 +104,14 @@ SlippiGameReporter::SlippiGameReporter(SlippiUser* user, const std::string curre std::array md5_array; mbedtls_md_file(s_md5_info, current_file_name.c_str(), md5_array.data()); this->m_iso_hash = std::string(md5_array.begin(), md5_array.end()); + + if (known_desync_isos.find(this->m_iso_hash) != known_desync_isos.end() && + known_desync_isos.at(this->m_iso_hash)) + { + OSD::AddTypedMessage(OSD::MessageType::DesyncWarning, + "\n\n\n\nCAUTION: You are using an ISO that is known to cause desyncs", + 20000, OSD::Color::RED); + } INFO_LOG_FMT(SLIPPI_ONLINE, "MD5 Hash: {}", this->m_iso_hash); }); m_md5_thread.detach(); diff --git a/Source/Core/Core/Slippi/SlippiGameReporter.h b/Source/Core/Core/Slippi/SlippiGameReporter.h index a856cab602..b1e7927101 100644 --- a/Source/Core/Core/Slippi/SlippiGameReporter.h +++ b/Source/Core/Core/Slippi/SlippiGameReporter.h @@ -69,6 +69,13 @@ protected: std::vector m_player_uids; + std::unordered_map known_desync_isos = { + {"23d6baef06bd65989585096915da20f2", true}, + {"27a5668769a54cd3515af47b8d9982f3", true}, + {"5805fa9f1407aedc8804d0472346fc5f", true}, + {"9bb3e275e77bb1a160276f2330f93931", true}, + }; + SlippiUser* m_user; std::string m_iso_hash; std::queue game_report_queue; diff --git a/Source/Core/VideoCommon/OnScreenDisplay.h b/Source/Core/VideoCommon/OnScreenDisplay.h index 7e659852d1..7fedaf960c 100644 --- a/Source/Core/VideoCommon/OnScreenDisplay.h +++ b/Source/Core/VideoCommon/OnScreenDisplay.h @@ -15,7 +15,7 @@ enum class MessageType NetPlayPing, NetPlayBuffer, PerformanceWarning, - + DesyncWarning, // This entry must be kept last so that persistent typed messages are // displayed before other messages Typeless,