diff --git a/Data/Sys/GameSettings/GALE01r2.ini b/Data/Sys/GameSettings/GALE01r2.ini index b20fc2aa31..63d1cc4038 100644 --- a/Data/Sys/GameSettings/GALE01r2.ini +++ b/Data/Sys/GameSettings/GALE01r2.ini @@ -1,10 +1,8 @@ # GALE01 - Super Smash Bros. Melee NTSC-U 1.02 -# no idea if these even do anything in mainline [Core] CPUThread = True GPUDeterminismMode = fake-completion -PollingMethod = OnSIRead FastDiscSpeed = True [Gecko_Enabled] @@ -580,6 +578,7 @@ C216EA30 00000004 #Common/Winners Names are Gold on CSS/Remember Who LRA Started 04261B1C 60000000 #External/Closing CSS Door Preserves Nametag/On Window Close/Skip Nametag ID Reset.asm 04261B30 60000000 #External/Closing CSS Door Preserves Nametag/On Window Close/Skip isUsingNametag Bool Reset.asm 042605FC 38C00003 #External/Unplugging Closes CSS Door/Unplugging Closes CSS Door.asm +041239A8 60000000 #External/FreezeGlitchFix/FreezeGlitchFix.asm $Required: Slippi Recording [Fizzi, Achilles, UnclePunch] *Saves replays, Slippi device must be in Slot B. @@ -3416,7 +3415,7 @@ C21BFA20 00000012 #Online/Slippi Online Scene/boot.asm 3D80801B 618C136C 7D8903A6 4E800420 38600001 00000000 -C21A45BC 00000114 #Online/Slippi Online Scene/main.asm +C21A45BC 0000011A #Online/Slippi Online Scene/main.asm 7C0802A6 90010004 9421FF50 BE810008 3C80803E 6084DC1C @@ -3425,7 +3424,7 @@ C21A45BC 00000114 #Online/Slippi Online Scene/main.asm 38600000 986DAFA3 986DAFC8 38600008 4800015D 7C8802A6 -4800002D 48000838 +4800002D 48000868 80830000 5485467A 2C050048 40820014 548401BA 7C840734 @@ -3480,8 +3479,8 @@ BA810008 800100B4 03030000 00000000 00000000 05000000 00000000 00000000 -04030000 480002F5 -48000475 20000000 +04030000 48000325 +480004A5 20000000 80490880 804D68D0 FF000000 4E800021 81940000 7C0802A6 @@ -3517,7 +3516,7 @@ BE810008 7C7E1B78 2C030000 40820000 886DAFCA 2C030000 41820020 48000004 -48000389 3C808047 +480003B9 3C808047 60849D30 38600005 98640005 48000018 3C808047 60849D30 @@ -3545,7 +3544,7 @@ BE810008 7C7F1B78 4E800421 7C7E1B78 887E0001 889E0002 7C032000 4082001C -480002A9 3C808047 +480002D9 3C808047 60849D30 38600005 98640005 4800001C 38600000 3D80801A @@ -3560,7 +3559,13 @@ BE810008 3D80801B 4E800421 38600000 3D808000 618C5610 7D8903A6 4E800421 -7C7F1B78 887F0003 +7C7F1B78 3A800000 +3AA00000 7E83A378 +48000329 2C030000 +41820008 3AB50001 +3A940001 2C140004 +4180FFE4 2C150001 +4082001C 887F0003 48000301 2C030000 4182000C 38600001 48000008 38600000 @@ -3932,7 +3937,7 @@ C21A5018 00000005 04218D68 C8228000 $Optional: Widescreen 16:9 [Dan Salvato, mirrorbender, Achilles1515, UnclePunch] -*Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors ---------------------- +*Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors ---------------------- *Will not cause desyncs when playing online 043BB05C 3EB00000 #External/Widescreen/Fix Screen Flash.asm C236A4A8 00000006 #External/Widescreen/Overwrite CObj Values.asm @@ -3959,17 +3964,17 @@ C0030000 4800000C 044DDB84 3E89FEFA #External/Widescreen/Nametag Fixes/Adjust Nametag Text X Scale.asm $Optional: Disable Screen Shake [Achilles1515] -*Will prevent screen from shaking on hits, KOs, collisions, etc ----------------------- +*Will prevent screen from shaking on hits, KOs, collisions, etc ----------------------- *Will not cause desyncs when playing online 04030E44 4E800020 $Optional: Center Align 2P HUD [Achilles1515] -*When playing online, character %'s will always be centered ------------------------- +*When playing online, character %'s will always be centered ------------------------- *Will not cause desyncs when playing online 0416E9AC 38600002 $Optional: Flash Red on Failed L-Cancel [Achilles1515, Fizzi] -*When playing online, this will only affect your character --------------------------- +*When playing online, this will only affect your character --------------------------- *Will not cause desyncs when playing online C20C0148 0000000C #External/FlashRedFailedLCancel/ChangeColor.asm 387F0488 89FE0564 diff --git a/Data/Sys/GameSettings/GALJ01r2.ini b/Data/Sys/GameSettings/GALJ01r2.ini index 3f2face11a..a69f7f5584 100644 --- a/Data/Sys/GameSettings/GALJ01r2.ini +++ b/Data/Sys/GameSettings/GALJ01r2.ini @@ -1,6 +1,5 @@ # GALJ01 - Super Smash Bros. Melee NTSC-J 1.02 -# no idea if these even do anything in mainline [Core] CPUThread = True GPUDeterminismMode = fake-completion @@ -580,6 +579,7 @@ C216EA30 00000004 #Common/Winners Names are Gold on CSS/Remember Who LRA Started 04261B1C 60000000 #External/Closing CSS Door Preserves Nametag/On Window Close/Skip Nametag ID Reset.asm 04261B30 60000000 #External/Closing CSS Door Preserves Nametag/On Window Close/Skip isUsingNametag Bool Reset.asm 042605FC 38C00003 #External/Unplugging Closes CSS Door/Unplugging Closes CSS Door.asm +041239A8 60000000 #External/FreezeGlitchFix/FreezeGlitchFix.asm $Required: Slippi Recording [Fizzi, Achilles, UnclePunch] *Saves replays, Slippi device must be in Slot B. @@ -3416,7 +3416,7 @@ C21BFA20 00000012 #Online/Slippi Online Scene/boot.asm 3D80801B 618C136C 7D8903A6 4E800420 38600001 00000000 -C21A45BC 00000114 #Online/Slippi Online Scene/main.asm +C21A45BC 0000011A #Online/Slippi Online Scene/main.asm 7C0802A6 90010004 9421FF50 BE810008 3C80803E 6084DC1C @@ -3425,7 +3425,7 @@ C21A45BC 00000114 #Online/Slippi Online Scene/main.asm 38600000 986DAFA3 986DAFC8 38600008 4800015D 7C8802A6 -4800002D 48000838 +4800002D 48000868 80830000 5485467A 2C050048 40820014 548401BA 7C840734 @@ -3480,8 +3480,8 @@ BA810008 800100B4 03030000 00000000 00000000 05000000 00000000 00000000 -04030000 480002F5 -48000475 20000000 +04030000 48000325 +480004A5 20000000 80490880 804D68D0 FF000000 4E800021 81940000 7C0802A6 @@ -3517,7 +3517,7 @@ BE810008 7C7E1B78 2C030000 40820000 886DAFCA 2C030000 41820020 48000004 -48000389 3C808047 +480003B9 3C808047 60849D30 38600005 98640005 48000018 3C808047 60849D30 @@ -3545,7 +3545,7 @@ BE810008 7C7F1B78 4E800421 7C7E1B78 887E0001 889E0002 7C032000 4082001C -480002A9 3C808047 +480002D9 3C808047 60849D30 38600005 98640005 4800001C 38600000 3D80801A @@ -3560,7 +3560,13 @@ BE810008 3D80801B 4E800421 38600000 3D808000 618C5610 7D8903A6 4E800421 -7C7F1B78 887F0003 +7C7F1B78 3A800000 +3AA00000 7E83A378 +48000329 2C030000 +41820008 3AB50001 +3A940001 2C140004 +4180FFE4 2C150001 +4082001C 887F0003 48000301 2C030000 4182000C 38600001 48000008 38600000 @@ -3932,7 +3938,7 @@ C21A5018 00000005 04218D68 C8228000 $Optional: Widescreen 16:9 [Dan Salvato, mirrorbender, Achilles1515, UnclePunch] -*Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors ---------------------- +*Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors ---------------------- *Will not cause desyncs when playing online 043BB05C 3EB00000 #External/Widescreen/Fix Screen Flash.asm C236A4A8 00000006 #External/Widescreen/Overwrite CObj Values.asm @@ -3959,17 +3965,17 @@ C0030000 4800000C 044DDB84 3E89FEFA #External/Widescreen/Nametag Fixes/Adjust Nametag Text X Scale.asm $Optional: Disable Screen Shake [Achilles1515] -*Will prevent screen from shaking on hits, KOs, collisions, etc ----------------------- +*Will prevent screen from shaking on hits, KOs, collisions, etc ----------------------- *Will not cause desyncs when playing online 04030E44 4E800020 $Optional: Center Align 2P HUD [Achilles1515] -*When playing online, character %'s will always be centered ------------------------- +*When playing online, character %'s will always be centered ------------------------- *Will not cause desyncs when playing online 0416E9AC 38600002 $Optional: Flash Red on Failed L-Cancel [Achilles1515, Fizzi] -*When playing online, this will only affect your character --------------------------- +*When playing online, this will only affect your character --------------------------- *Will not cause desyncs when playing online C20C0148 0000000C #External/FlashRedFailedLCancel/ChangeColor.asm 387F0488 89FE0564 diff --git a/Source/Core/Common/Version.cpp b/Source/Core/Common/Version.cpp index 24fa695104..88f65f135c 100644 --- a/Source/Core/Common/Version.cpp +++ b/Source/Core/Common/Version.cpp @@ -18,7 +18,7 @@ namespace Common #define BUILD_TYPE_STR "" #endif -#define SLIPPI_REV_STR "2.2.0" +#define SLIPPI_REV_STR "2.2.1" const std::string scm_slippi_semver_str = SLIPPI_REV_STR; diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index 049fc206ee..be70cd0a96 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -113,7 +113,6 @@ CEXISlippi::CEXISlippi() // Update user file and then listen for User #ifndef IS_PLAYBACK - user->UpdateFile(); user->ListenForLogIn(); #endif @@ -1228,7 +1227,7 @@ void CEXISlippi::prepareFrameData(u8* payload) g_playbackStatus->isHardFFW = false; } - bool shouldFFW = shouldFFWFrame(frameIndex); + bool shouldFFW = g_playbackStatus->shouldFFWFrame(frameIndex); u8 requestResultCode = shouldFFW ? FRAME_RESP_FASTFORWARD : FRAME_RESP_CONTINUE; if (!isFrameReady) { @@ -1318,25 +1317,6 @@ void CEXISlippi::prepareFrameData(u8* payload) } } -bool CEXISlippi::shouldFFWFrame(int32_t frameIndex) -{ - if (!g_playbackStatus->isSoftFFW && !g_playbackStatus->isHardFFW) - { - // If no FFW at all, don't FFW this frame - return false; - } - - if (g_playbackStatus->isHardFFW) - { - // For a hard FFW, always FFW until it's turned off - return true; - } - - // Here we have a soft FFW, we only want to turn on FFW for single frames once - // every X frames to FFW in a more smooth manner - return frameIndex - g_playbackStatus->lastFFWFrame >= 15; -} - void CEXISlippi::prepareIsStockSteal(u8* payload) { // Since we are prepping new data, clear any existing data @@ -1802,10 +1782,6 @@ void CEXISlippi::prepareOnlineMatchState() SlippiPlayerSelections lps = matchInfo->localPlayerSelections; SlippiPlayerSelections rps = matchInfo->remotePlayerSelections; - // Overwrite local player character - onlineMatchBlock[0x60 + localPlayerIndex * 0x24] = lps.characterId; - onlineMatchBlock[0x63 + localPlayerIndex * 0x24] = lps.characterColor; - #ifdef LOCAL_TESTING rps.characterId = 0x2; rps.characterColor = 2; @@ -1870,7 +1846,6 @@ void CEXISlippi::prepareOnlineMatchState() // Turn pause on in direct, off in everything else u8* gameBitField3 = (u8*)& onlineMatchBlock[2]; - directMode = SlippiMatchmaking::OnlinePlayMode::DIRECT; *gameBitField3 = lastSearch.mode == directMode ? *gameBitField3 & 0xF7 : *gameBitField3 | 0x8; } @@ -2019,9 +1994,7 @@ void CEXISlippi::handleLogInRequest() bool logInRes = user->AttemptLogin(); if (!logInRes) { - //#ifndef LINUX_LOCAL_DEV Host_LowerWindow(); - //#endif user->OpenLogInPage(); user->ListenForLogIn(); } @@ -2035,7 +2008,8 @@ void CEXISlippi::handleLogOutRequest() void CEXISlippi::handleUpdateAppRequest() { #ifdef __APPLE__ - CriticalAlertT("Automatic updates are not available for macOS, please update manually."); + CriticalAlertT( + "Automatic updates are not available for macOS, please get the latest update from slippi.gg/netplay."); #else Host_LowerWindow(); user->UpdateApp(); @@ -2250,5 +2224,4 @@ bool CEXISlippi::IsPresent() const } void CEXISlippi::TransferByte(u8& byte) {} - } diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h index 85d2771b3d..b0681e6bc8 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h @@ -190,9 +190,6 @@ namespace ExpansionInterface u32 stallFrameCount = 0; bool isConnectionStalled = false; - bool isSoftFFW = false; - bool isHardFFW = false; - int32_t lastFFWFrame = INT_MIN; std::vector m_read_queue; std::unique_ptr m_current_game = nullptr; SlippiMatchmaking::MatchSearchSettings lastSearch; diff --git a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp index d4cdfe5126..bc4d075fff 100644 --- a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp +++ b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp @@ -364,8 +364,6 @@ void SlippiMatchmaking::handleMatchmaking() if (latestVersion != "") { // Update file to get new version number when the mm server tells us our version is outdated - m_user->UpdateFile(); - m_user->AttemptLogin(); m_user->OverwriteLatestVersion(latestVersion); // Force latest version for people whose file updates dont work } diff --git a/Source/Core/Core/Slippi/SlippiPlayback.cpp b/Source/Core/Core/Slippi/SlippiPlayback.cpp index 6328f7f7d9..9bb755dbf6 100644 --- a/Source/Core/Core/Slippi/SlippiPlayback.cpp +++ b/Source/Core/Core/Slippi/SlippiPlayback.cpp @@ -267,6 +267,25 @@ void SlippiPlaybackStatus::loadState(s32 closestStateFrame) } } +bool SlippiPlaybackStatus::shouldFFWFrame(s32 frameIndex) const +{ + if (!isSoftFFW && !isHardFFW) + { + // If no FFW at all, don't FFW this frame + return false; + } + + if (isHardFFW) + { + // For a hard FFW, always FFW until it's turned off + return true; + } + + // Here we have a soft FFW, we only want to turn on FFW for single frames once + // every X frames to FFW in a more smooth manner + return (frameIndex - lastFFWFrame) >= 15; +} + void SlippiPlaybackStatus::updateWatchSettingsStartEnd() { int startFrame = g_replayComm->current.startFrame; diff --git a/Source/Core/Core/Slippi/SlippiPlayback.h b/Source/Core/Core/Slippi/SlippiPlayback.h index 83193fac5c..692aabf07b 100644 --- a/Source/Core/Core/Slippi/SlippiPlayback.h +++ b/Source/Core/Core/Slippi/SlippiPlayback.h @@ -31,6 +31,7 @@ public: void startThreads(void); void resetPlayback(void); + bool shouldFFWFrame(s32 frameIndex) const; void prepareSlippiPlayback(s32& frameIndex); void SeekToFrame(); diff --git a/Source/Core/Core/Slippi/SlippiUser.cpp b/Source/Core/Core/Slippi/SlippiUser.cpp index 1e9452254a..e700ecdb8d 100644 --- a/Source/Core/Core/Slippi/SlippiUser.cpp +++ b/Source/Core/Core/Slippi/SlippiUser.cpp @@ -11,6 +11,7 @@ #include "Common/MsgHandler.h" #include "Common/StringUtil.h" #include "Common/Thread.h" +#include "Common/Version.h" #include "Common/Common.h" #include "Core/ConfigManager.h" @@ -177,7 +178,7 @@ void SlippiUser::OpenLogInPage() void SlippiUser::UpdateApp() { #ifdef _WIN32 - auto isoPath = SConfig::GetInstance().m_strFilename; + auto isoPath = SConfig::GetInstance().m_strIsoPath; std::string path = File::GetExeDirectory() + "/dolphin-slippi-tools.exe"; std::string echoMsg = "echo Starting update process. If nothing happen after a few " @@ -185,8 +186,8 @@ void SlippiUser::UpdateApp() // std::string command = // "start /b cmd /c " + echoMsg + " && \"" + path + "\" app-update -launch -iso \"" + isoPath + "\""; std::string command = "start /b cmd /c " + echoMsg + " && \"" + path + "\" app-update -launch -iso \"" + isoPath + - "\" -version \"" + scm_slippi_semver_str + "\""; - WARN_LOG(SLIPPI, "Executing app update command: %s", command); + "\" -version \"" + Common::scm_slippi_semver_str + "\""; + WARN_LOG(SLIPPI, "Executing app update command: %s", command.c_str()); RunSystemCommand(command); #elif defined(__APPLE__) #else