From b038b61a29cd67a46c6779db776e75e799e2e0b7 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Mon, 25 May 2015 23:36:28 -0500 Subject: [PATCH 1/3] [ARMv7] Extend the life of the JIT Recompiler. Until loadstores are fully investigated, let's artificially extend the life of it by disabling all of them. These instructions break in a very terrible way and eventually all loadstores end up attempting to access memory region (u32)-1. Disable until someone has enough time to investigate further. --- Source/Core/Core/PowerPC/JitArm32/Jit.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/Core/Core/PowerPC/JitArm32/Jit.cpp b/Source/Core/Core/PowerPC/JitArm32/Jit.cpp index 8eb430b7b4..8fc99c28cc 100644 --- a/Source/Core/Core/PowerPC/JitArm32/Jit.cpp +++ b/Source/Core/Core/PowerPC/JitArm32/Jit.cpp @@ -40,6 +40,13 @@ void JitArm::Init() code_block.m_fpa = &js.fpa; analyzer.SetOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE); InitBackpatch(); + + // Disable all loadstores + // Ever since the MMU has been optimized for x86, loadstores on ARMv7 have been knackered + // XXX: Investigate exactly why these are broken + SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStoreOff = true; + SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStoreFloatingOff = true; + SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStorePairedOff= true; } void JitArm::ClearCache() From f403bb09b01a1217fee205cf1829cb503a52a535 Mon Sep 17 00:00:00 2001 From: aerisarn Date: Mon, 1 Jun 2015 14:47:18 +0200 Subject: [PATCH 2/3] MainNoGUI: support real Wiimotes This should be restructured to move the connection logic into Core instead of duplicating it in every Host, but alas, I'm too lazy for that right now. ~flacs --- Source/Core/DolphinWX/MainNoGUI.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/Core/DolphinWX/MainNoGUI.cpp b/Source/Core/DolphinWX/MainNoGUI.cpp index ca028a69fe..9186742d46 100644 --- a/Source/Core/DolphinWX/MainNoGUI.cpp +++ b/Source/Core/DolphinWX/MainNoGUI.cpp @@ -19,6 +19,8 @@ #include "Core/Host.h" #include "Core/State.h" #include "Core/HW/Wiimote.h" +#include "Core/IPC_HLE/WII_IPC_HLE_Device_usb.h" +#include "Core/IPC_HLE/WII_IPC_HLE_WiiMote.h" #include "Core/PowerPC/PowerPC.h" #include "UICommon/UICommon.h" @@ -95,7 +97,16 @@ bool Host_RendererIsFullscreen() return rendererIsFullscreen; } -void Host_ConnectWiimote(int wm_idx, bool connect) {} +void Host_ConnectWiimote(int wm_idx, bool connect) +{ + if (Core::IsRunning() && SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) + { + bool was_unpaused = Core::PauseAndLock(true); + GetUsbPointer()->AccessWiiMote(wm_idx | 0x100)->Activate(connect); + Host_UpdateMainFrame(); + Core::PauseAndLock(false, was_unpaused); + } +} void Host_SetWiiMoteConnectionState(int _State) {} From ebf30484943322bf1cc30bbec8ba445cf1164e43 Mon Sep 17 00:00:00 2001 From: Dwayne Slater Date: Tue, 2 Jun 2015 11:53:17 -0400 Subject: [PATCH 3/3] Fix invalid enums on OpenGLES --- Source/Core/VideoBackends/OGL/FramebufferManager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp index 839f91ad39..2bd7bbcb85 100644 --- a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp +++ b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp @@ -6,6 +6,7 @@ #include "Core/HW/Memmap.h" #include "VideoBackends/OGL/FramebufferManager.h" +#include "VideoBackends/OGL/GLInterfaceBase.h" #include "VideoBackends/OGL/Render.h" #include "VideoBackends/OGL/SamplerCache.h" #include "VideoBackends/OGL/TextureConverter.h" @@ -357,7 +358,8 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms glEnableVertexAttribArray(SHADER_COLOR0_ATTRIB); glVertexAttribPointer(SHADER_COLOR0_ATTRIB, 4, GL_UNSIGNED_BYTE, 1, sizeof(EfbPokeData), (void*)offsetof(EfbPokeData, data)); - glEnable(GL_PROGRAM_POINT_SIZE); + if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL) + glEnable(GL_PROGRAM_POINT_SIZE); } FramebufferManager::~FramebufferManager()