mirror of
https://github.com/wiiu-env/WiiUPluginLoaderBackend.git
synced 2026-03-21 17:25:21 -05:00
Block on VPADRead() while the plugin menu is open in Hyrule Warriors. (#109)
* Block on `VPADRead()` while the plugin menu is open. * Trying to please clang-format. * Block `VPADRead()` only for Hyrule Warriors. --------- Co-authored-by: Daniel K. O. (dkosmari) <none@none>
This commit is contained in:
parent
9aa660a302
commit
c4ba7030d9
|
|
@ -8,8 +8,11 @@
|
|||
#include "plugin/SectionInfo.h"
|
||||
#include "utils/config/ConfigUtils.h"
|
||||
|
||||
#include <coreinit/cache.h>
|
||||
#include <coreinit/core.h>
|
||||
#include <coreinit/messagequeue.h>
|
||||
#include <coreinit/time.h>
|
||||
#include <coreinit/title.h>
|
||||
#include <padscore/wpad.h>
|
||||
#include <vpad/input.h>
|
||||
|
||||
|
|
@ -21,9 +24,11 @@ DECL_FUNCTION(void, GX2SwapScanBuffers, void) {
|
|||
|
||||
if (sWantsToOpenConfigMenu && !gConfigMenuOpened) {
|
||||
gConfigMenuOpened = true;
|
||||
OSMemoryBarrier();
|
||||
ConfigUtils::openConfigMenu();
|
||||
gConfigMenuOpened = false;
|
||||
sWantsToOpenConfigMenu = false;
|
||||
OSMemoryBarrier();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -89,6 +94,14 @@ DECL_FUNCTION(int32_t, VPADRead, int32_t chan, VPADStatus *buffer, uint32_t buff
|
|||
if (gConfigMenuOpened) {
|
||||
// Ignore reading vpad input only from other threads if the config menu is opened
|
||||
if (OSGetCurrentThread() != gOnlyAcceptFromThread) {
|
||||
// Quick fix for Hyrule Warriors: block VPADRead() in non-rendering threads.
|
||||
switch (OSGetTitleID()) {
|
||||
case 0x00050000'1017CD00: // Hyrule Warriors JPN
|
||||
case 0x00050000'1017D800: // Hyrule Warriors USA
|
||||
case 0x00050000'1017D900: // Hyrule Warriors EUR
|
||||
while (gConfigMenuOpened)
|
||||
OSSleepTicks(OSMillisecondsToTicks(10));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include <wups/config.h>
|
||||
#include <wups/hooks.h>
|
||||
|
||||
#include <coreinit/cache.h>
|
||||
#include <coreinit/title.h>
|
||||
#include <sysapp/launch.h>
|
||||
|
||||
|
|
@ -166,6 +167,7 @@ void ConfigUtils::displayMenu() {
|
|||
|
||||
gOnlyAcceptFromThread = OSGetCurrentThread();
|
||||
ConfigSubState subStateReturnValue = SUB_STATE_ERROR;
|
||||
OSMemoryBarrier();
|
||||
while (true) {
|
||||
startTime = OSGetTime();
|
||||
if (gConfigMenuShouldClose) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user