diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt
index 2b7c141e68..0750be3eba 100644
--- a/Source/Core/Core/CMakeLists.txt
+++ b/Source/Core/Core/CMakeLists.txt
@@ -221,6 +221,7 @@ add_library(core
HW/GCMemcard/GCIFile.h
HW/GCMemcard/GCMemcard.cpp
HW/GCMemcard/GCMemcard.h
+ HW/GCMemcard/GCMemcardBase.h
HW/GCMemcard/GCMemcardDirectory.cpp
HW/GCMemcard/GCMemcardDirectory.h
HW/GCMemcard/GCMemcardRaw.cpp
diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj
index deeab45e20..fe33616c2f 100644
--- a/Source/Core/Core/Core.vcxproj
+++ b/Source/Core/Core/Core.vcxproj
@@ -514,6 +514,7 @@
+
diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters
index 7fe19d606b..b820c04802 100644
--- a/Source/Core/Core/Core.vcxproj.filters
+++ b/Source/Core/Core/Core.vcxproj.filters
@@ -1245,6 +1245,9 @@
HW %28Flipper/Hollywood%29\GCMemcard
+
+ HW %28Flipper/Hollywood%29\GCMemcard
+
HW %28Flipper/Hollywood%29\GCMemcard
diff --git a/Source/Core/Core/HW/GCMemcard/GCMemcard.h b/Source/Core/Core/HW/GCMemcard/GCMemcard.h
index e650429b81..f772c1214b 100644
--- a/Source/Core/Core/HW/GCMemcard/GCMemcard.h
+++ b/Source/Core/Core/HW/GCMemcard/GCMemcard.h
@@ -158,28 +158,6 @@ constexpr u8 MEMORY_CARD_ICON_FORMAT_CI8_UNIQUE_PALETTE = 3;
// each palette entry is 16 bits in RGB5A3 format
constexpr u32 MEMORY_CARD_CI8_PALETTE_ENTRIES = 256;
-class MemoryCardBase
-{
-public:
- explicit MemoryCardBase(int card_index = 0, int size_mbits = MBIT_SIZE_MEMORY_CARD_2043)
- : m_card_index(card_index), m_nintendo_card_id(size_mbits)
- {
- }
- virtual ~MemoryCardBase() {}
- virtual s32 Read(u32 src_address, s32 length, u8* dest_address) = 0;
- virtual s32 Write(u32 dest_address, s32 length, const u8* src_address) = 0;
- virtual void ClearBlock(u32 address) = 0;
- virtual void ClearAll() = 0;
- virtual void DoState(PointerWrap& p) = 0;
- u32 GetCardId() const { return m_nintendo_card_id; }
- bool IsAddressInBounds(u32 address) const { return address <= (m_memory_card_size - 1); }
-
-protected:
- int m_card_index;
- u16 m_nintendo_card_id;
- u32 m_memory_card_size;
-};
-
struct GCMBlock
{
GCMBlock();
diff --git a/Source/Core/Core/HW/GCMemcard/GCMemcardBase.h b/Source/Core/Core/HW/GCMemcard/GCMemcardBase.h
new file mode 100644
index 0000000000..6ecbf92c22
--- /dev/null
+++ b/Source/Core/Core/HW/GCMemcard/GCMemcardBase.h
@@ -0,0 +1,33 @@
+// Copyright 2020 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "Common/CommonTypes.h"
+
+#include "Core/HW/GCMemcard/GCMemcard.h"
+
+class PointerWrap;
+
+class MemoryCardBase
+{
+public:
+ explicit MemoryCardBase(int card_index = 0, int size_mbits = MBIT_SIZE_MEMORY_CARD_2043)
+ : m_card_index(card_index), m_nintendo_card_id(size_mbits)
+ {
+ }
+ virtual ~MemoryCardBase() = default;
+ virtual s32 Read(u32 src_address, s32 length, u8* dest_address) = 0;
+ virtual s32 Write(u32 dest_address, s32 length, const u8* src_address) = 0;
+ virtual void ClearBlock(u32 address) = 0;
+ virtual void ClearAll() = 0;
+ virtual void DoState(PointerWrap& p) = 0;
+ u32 GetCardId() const { return m_nintendo_card_id; }
+ bool IsAddressInBounds(u32 address) const { return address <= (m_memory_card_size - 1); }
+
+protected:
+ int m_card_index;
+ u16 m_nintendo_card_id;
+ u32 m_memory_card_size;
+};
diff --git a/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.h b/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.h
index 2869ba2d32..f3fe9ddaa0 100644
--- a/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.h
+++ b/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.h
@@ -12,6 +12,7 @@
#include "Common/Event.h"
#include "Core/HW/GCMemcard/GCIFile.h"
#include "Core/HW/GCMemcard/GCMemcard.h"
+#include "Core/HW/GCMemcard/GCMemcardBase.h"
// Uncomment this to write the system data of the memorycard from directory to disc
//#define _WRITE_MC_HEADER 1
diff --git a/Source/Core/Core/HW/GCMemcard/GCMemcardRaw.h b/Source/Core/Core/HW/GCMemcard/GCMemcardRaw.h
index 727d625aa4..f04034f340 100644
--- a/Source/Core/Core/HW/GCMemcard/GCMemcardRaw.h
+++ b/Source/Core/Core/HW/GCMemcard/GCMemcardRaw.h
@@ -11,6 +11,7 @@
#include "Common/Event.h"
#include "Common/Flag.h"
#include "Core/HW/GCMemcard/GCMemcard.h"
+#include "Core/HW/GCMemcard/GCMemcardBase.h"
class PointerWrap;