diff --git a/src/core/settings.cpp b/src/core/settings.cpp
index 153f7bf81..04d7b71a2 100644
--- a/src/core/settings.cpp
+++ b/src/core/settings.cpp
@@ -2,9 +2,17 @@
 #include "common/string_util.h"
 #include "host_interface.h"
 #include <array>
+#include <algorithm>
 
 Settings::Settings() = default;
 
+bool Settings::HasAnyPerGameMemoryCards() const
+{
+  return std::any_of(memory_card_types.begin(), memory_card_types.end(), [](MemoryCardType t) {
+    return (t == MemoryCardType::PerGame || t == MemoryCardType::PerGameTitle);
+  });
+}
+
 void Settings::Load(SettingsInterface& si)
 {
   region =
diff --git a/src/core/settings.h b/src/core/settings.h
index 33dc89365..8a26155a5 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -113,10 +113,7 @@ struct Settings
   bool log_to_window = false;
   bool log_to_file = false;
 
-  ALWAYS_INLINE bool HasAnyPerGameMemoryCards() const
-  {
-    return (memory_card_types[0] == MemoryCardType::PerGame || memory_card_types[1] == MemoryCardType::PerGame);
-  }
+  bool HasAnyPerGameMemoryCards() const;
 
   enum : u32
   {