aboutsummaryrefslogtreecommitdiff
path: root/src/DSi_SD.h
diff options
context:
space:
mode:
authorJesse Talavera-Greenberg <jesse@jesse.tg>2023-10-11 11:20:05 -0400
committerGitHub <noreply@github.com>2023-10-11 17:20:05 +0200
commitd4e51f80601f57399db49f1010c45427bd2bf3c4 (patch)
tree206985e7bedfc1755941eeba26d6605d4e03fa0a /src/DSi_SD.h
parentb2fcff97c186cc9db263089acd4810ea7d58517d (diff)
Refactor DSi_NAND (#1844)
* Refactor diskio's contents - Change ff_disk_read_cb/write_cb into a std::function instead of a raw pointer - Add const specifiers as needed * Refactor DSi_NAND to manage the file system's mounted lifetime with RAII * Split NANDMount into NANDMount and NANDImage - NANDImage is used for information about the NAND that doesn't require decryption or filesystem access - NANDMount is used to actually access the file system - Both classes manage their respective resources (the NAND file handle and the NAND's mount) with RAII - Also split the file loading into another function that I will remove in a later PR * Make NANDMount immovable * Remove NAND-loading code that I had sectioned off into a function - Incomplete copypasta - I must have gotten distracted * Tidy up NANDImage's initialization - Don't unmount the disk image if the constructor fails (that's NANDMount's job now) - Only assign CurFile if the constructor succeeds * Add some const-correctness * Move DSi NAND initialization to the frontend - The NANDImage is now installed via a unique_ptr in DSi * Remove Platform::DSi_NANDPath - Not Config::DSiNANDPath; that can still be configured as usual - The core no longer needs to care
Diffstat (limited to 'src/DSi_SD.h')
-rw-r--r--src/DSi_SD.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/DSi_SD.h b/src/DSi_SD.h
index fe9e23a..8e53a77 100644
--- a/src/DSi_SD.h
+++ b/src/DSi_SD.h
@@ -24,6 +24,11 @@
#include "FATStorage.h"
#include "Savestate.h"
+namespace DSi_NAND
+{
+ class NANDImage;
+}
+
class DSi_SDDevice;
@@ -125,7 +130,7 @@ protected:
class DSi_MMCStorage : public DSi_SDDevice
{
public:
- DSi_MMCStorage(DSi_SDHost* host, bool internal, const std::string& filename);
+ DSi_MMCStorage(DSi_SDHost* host, DSi_NAND::NANDImage& nand);
DSi_MMCStorage(DSi_SDHost* host, bool internal, const std::string& filename, u64 size, bool readonly, const std::string& sourcedir);
~DSi_MMCStorage();
@@ -133,7 +138,7 @@ public:
void DoSavestate(Savestate* file);
- void SetCID(u8* cid) { memcpy(CID, cid, 16); }
+ void SetCID(const u8* cid) { memcpy(CID, cid, sizeof(CID)); }
void SendCMD(u8 cmd, u32 param);
void SendACMD(u8 cmd, u32 param);
@@ -142,7 +147,7 @@ public:
private:
bool Internal;
- Platform::FileHandle* File;
+ DSi_NAND::NANDImage* NAND;
FATStorage* SD;
u8 CID[16];