From efe6b473c5b16d57e0bc6535e43fdafff23e6438 Mon Sep 17 00:00:00 2001
From: bunnei <bunneidev@gmail.com>
Date: Wed, 8 Aug 2018 23:22:45 -0400
Subject: [PATCH] maxwell_3d: Ignore macros that have not been uploaded yet.

- Used by Super Mario Odyssey (in game).
---
 src/video_core/engines/maxwell_3d.cpp | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index ed22a2090f..a46ed4bd7e 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -23,12 +23,17 @@ Maxwell3D::Maxwell3D(VideoCore::RasterizerInterface& rasterizer, MemoryManager&
     : memory_manager(memory_manager), rasterizer{rasterizer}, macro_interpreter(*this) {}
 
 void Maxwell3D::CallMacroMethod(u32 method, std::vector<u32> parameters) {
-    auto macro_code = uploaded_macros.find(method);
-    // The requested macro must have been uploaded already.
-    ASSERT_MSG(macro_code != uploaded_macros.end(), "Macro %08X was not uploaded", method);
-
-    // Reset the current macro and execute it.
+    // Reset the current macro.
     executing_macro = 0;
+
+    // The requested macro must have been uploaded already.
+    auto macro_code = uploaded_macros.find(method);
+    if (macro_code == uploaded_macros.end()) {
+        LOG_ERROR(HW_GPU, "Macro {:04X} was not uploaded", method);
+        return;
+    }
+
+    // Execute the current macro.
     macro_interpreter.Execute(macro_code->second, std::move(parameters));
 }