From 2e1bfe073cc32d2677e1653baaf1f400b79f8c67 Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Mon, 15 Jun 2020 01:37:17 +0200 Subject: [PATCH] GCMemcard: Split out MemoryCardBase into its own header, which is the base class for the raw and folder memory cards and has little to do with the actual memory card data structures. --- Source/Core/Core/CMakeLists.txt | 1 + Source/Core/Core/Core.vcxproj | 1 + Source/Core/Core/Core.vcxproj.filters | 3 ++ Source/Core/Core/HW/GCMemcard/GCMemcard.h | 22 ------------- Source/Core/Core/HW/GCMemcard/GCMemcardBase.h | 33 +++++++++++++++++++ .../Core/HW/GCMemcard/GCMemcardDirectory.h | 1 + Source/Core/Core/HW/GCMemcard/GCMemcardRaw.h | 1 + 7 files changed, 40 insertions(+), 22 deletions(-) create mode 100644 Source/Core/Core/HW/GCMemcard/GCMemcardBase.h 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;