diff --git a/include/services/fs.hpp b/include/services/fs.hpp index 435dc5a6..fc7497dd 100644 --- a/include/services/fs.hpp +++ b/include/services/fs.hpp @@ -60,6 +60,7 @@ class FSService { void getArchiveResource(u32 messagePointer); void getFreeBytes(u32 messagePointer); void getFormatInfo(u32 messagePointer); + void getNumSeeds(u32 messagePointer); void getPriority(u32 messagePointer); void getThisSaveDataSecureValue(u32 messagePointer); void theGameboyVCFunction(u32 messagePointer); diff --git a/src/core/services/fs.cpp b/src/core/services/fs.cpp index 7b963481..8cdba781 100644 --- a/src/core/services/fs.cpp +++ b/src/core/services/fs.cpp @@ -42,6 +42,7 @@ namespace FSCommands { SetThisSaveDataSecureValue = 0x086E00C0, GetThisSaveDataSecureValue = 0x086F0040, TheGameboyVCFunction = 0x08750180, + GetNumSeeds = 0x087D0000, }; } @@ -192,6 +193,14 @@ void FSService::handleSyncRequest(u32 messagePointer) { case FSCommands::SetThisSaveDataSecureValue: setThisSaveDataSecureValue(messagePointer); break; case FSCommands::AbnegateAccessRight: abnegateAccessRight(messagePointer); break; case FSCommands::TheGameboyVCFunction: theGameboyVCFunction(messagePointer); break; + case FSCommands::GetNumSeeds: getNumSeeds(messagePointer); break; + case 0x08830000: // Home Menu uses this command, what is this? + Helpers::warn("FS command 0x08830000"); + + mem.write32(messagePointer, IPC::responseHeader(0x883, 2, 0)); + mem.write32(messagePointer + 4, Result::Success); + mem.write32(messagePointer + 8, 0); + break; default: Helpers::panic("FS service requested. Command: %08X\n", command); } } @@ -729,4 +738,12 @@ void FSService::cardSlotIsInserted(u32 messagePointer) { mem.write32(messagePointer, IPC::responseHeader(0x821, 2, 0)); mem.write32(messagePointer + 4, Result::Success); mem.write8(messagePointer + 8, cardInserted ? 1 : 0); +} + +void FSService::getNumSeeds(u32 messagePointer) { + log("FS::GetNumSeeds (stubbed)"); + + mem.write32(messagePointer, IPC::responseHeader(0x87D, 2, 0)); + mem.write32(messagePointer + 4, Result::Success); + mem.write8(messagePointer + 8, 0); // Number of seeds?? } \ No newline at end of file