mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-09 23:55:40 +12:00
[FS] Implement SdmcIsWritable
This commit is contained in:
parent
91bf249cba
commit
5f2f82d074
2 changed files with 17 additions and 1 deletions
|
@ -49,6 +49,7 @@ class FSService {
|
||||||
void initialize(u32 messagePointer);
|
void initialize(u32 messagePointer);
|
||||||
void initializeWithSdkVersion(u32 messagePointer);
|
void initializeWithSdkVersion(u32 messagePointer);
|
||||||
void isSdmcDetected(u32 messagePointer);
|
void isSdmcDetected(u32 messagePointer);
|
||||||
|
void isSdmcWritable(u32 messagePOinter);
|
||||||
void openArchive(u32 messagePointer);
|
void openArchive(u32 messagePointer);
|
||||||
void openDirectory(u32 messagePointer);
|
void openDirectory(u32 messagePointer);
|
||||||
void openFile(u32 messagePointer);
|
void openFile(u32 messagePointer);
|
||||||
|
|
|
@ -24,6 +24,7 @@ namespace FSCommands {
|
||||||
FormatThisUserSaveData = 0x080F0180,
|
FormatThisUserSaveData = 0x080F0180,
|
||||||
GetFreeBytes = 0x08120080,
|
GetFreeBytes = 0x08120080,
|
||||||
IsSdmcDetected = 0x08170000,
|
IsSdmcDetected = 0x08170000,
|
||||||
|
IsSdmcWritable = 0x08180000,
|
||||||
GetFormatInfo = 0x084500C2,
|
GetFormatInfo = 0x084500C2,
|
||||||
FormatSaveData = 0x084C0242,
|
FormatSaveData = 0x084C0242,
|
||||||
InitializeWithSdkVersion = 0x08610042,
|
InitializeWithSdkVersion = 0x08610042,
|
||||||
|
@ -155,6 +156,7 @@ void FSService::handleSyncRequest(u32 messagePointer) {
|
||||||
case FSCommands::Initialize: initialize(messagePointer); break;
|
case FSCommands::Initialize: initialize(messagePointer); break;
|
||||||
case FSCommands::InitializeWithSdkVersion: initializeWithSdkVersion(messagePointer); break;
|
case FSCommands::InitializeWithSdkVersion: initializeWithSdkVersion(messagePointer); break;
|
||||||
case FSCommands::IsSdmcDetected: isSdmcDetected(messagePointer); break;
|
case FSCommands::IsSdmcDetected: isSdmcDetected(messagePointer); break;
|
||||||
|
case FSCommands::IsSdmcWritable: isSdmcWritable(messagePointer); break;
|
||||||
case FSCommands::OpenArchive: openArchive(messagePointer); break;
|
case FSCommands::OpenArchive: openArchive(messagePointer); break;
|
||||||
case FSCommands::OpenDirectory: openDirectory(messagePointer); break;
|
case FSCommands::OpenDirectory: openDirectory(messagePointer); break;
|
||||||
case FSCommands::OpenFile: [[likely]] openFile(messagePointer); break;
|
case FSCommands::OpenFile: [[likely]] openFile(messagePointer); break;
|
||||||
|
@ -536,9 +538,22 @@ void FSService::setPriority(u32 messagePointer) {
|
||||||
priority = value;
|
priority = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Shows whether an SD card is inserted. At the moment stubbed to no
|
||||||
|
constexpr bool sdInserted = false;
|
||||||
|
|
||||||
void FSService::isSdmcDetected(u32 messagePointer) {
|
void FSService::isSdmcDetected(u32 messagePointer) {
|
||||||
log("FS::IsSdmcDetected\n");
|
log("FS::IsSdmcDetected\n");
|
||||||
mem.write32(messagePointer, IPC::responseHeader(0x817, 2, 0));
|
mem.write32(messagePointer, IPC::responseHeader(0x817, 2, 0));
|
||||||
mem.write32(messagePointer + 4, Result::Success);
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
mem.write32(messagePointer + 8, 0); // Whether SD is detected. For now we emulate a 3DS without an SD.
|
mem.write8(messagePointer + 8, sdInserted ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// We consider our SD card to always be writable if oen is inserted for now
|
||||||
|
// So isSdmcWritable returns 1 if an SD card is inserted (because it's always writable) and 0 if not.
|
||||||
|
void FSService::isSdmcWritable(u32 messagePointer) {
|
||||||
|
log("FS::isSdmcWritable\n");
|
||||||
|
mem.write32(messagePointer, IPC::responseHeader(0x818, 2, 0));
|
||||||
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
|
mem.write8(messagePointer + 8, sdInserted ? 1 : 0);
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue