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;