Browse Source
FS: Added stubbed code to intercept and decode file system service functions.
FS: Added stubbed code to intercept and decode file system service functions.
FS: Added to CMakeLists.txtpull/15/merge
6 changed files with 164 additions and 0 deletions
-
2src/core/CMakeLists.txt
-
2src/core/core.vcxproj
-
6src/core/core.vcxproj.filters
-
121src/core/hle/service/fs.cpp
-
31src/core/hle/service/fs.h
-
2src/core/hle/service/service.cpp
@ -0,0 +1,121 @@ |
|||
// Copyright 2014 Citra Emulator Project
|
|||
// Licensed under GPLv2
|
|||
// Refer to the license.txt file included.
|
|||
|
|||
|
|||
#include "common/common.h"
|
|||
|
|||
#include "core/hle/hle.h"
|
|||
#include "core/hle/service/fs.h"
|
|||
|
|||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
// Namespace FS_User
|
|||
|
|||
namespace FS_User { |
|||
|
|||
void Initialize(Service::Interface* self) { |
|||
u32* cmd_buff = Service::GetCommandBuffer(); |
|||
DEBUG_LOG(KERNEL, "called"); |
|||
cmd_buff[1] = 0; // No error
|
|||
} |
|||
|
|||
const Interface::FunctionInfo FunctionTable[] = { |
|||
{0x000100C6, nullptr, "Dummy1"}, |
|||
{0x040100C4, nullptr, "Control"}, |
|||
{0x08010002, Initialize, "Initialize"}, |
|||
{0x080201C2, nullptr, "OpenFile"}, |
|||
{0x08030204, nullptr, "OpenFileDirectly"}, |
|||
{0x08040142, nullptr, "DeleteFile"}, |
|||
{0x08050244, nullptr, "RenameFile"}, |
|||
{0x08060142, nullptr, "DeleteDirectory"}, |
|||
{0x08070142, nullptr, "DeleteDirectoryRecursively"}, |
|||
{0x08080202, nullptr, "CreateFile"}, |
|||
{0x08090182, nullptr, "CreateDirectory"}, |
|||
{0x080A0244, nullptr, "RenameDirectory"}, |
|||
{0x080B0102, nullptr, "OpenDirectory"}, |
|||
{0x080C00C2, nullptr, "OpenArchive"}, |
|||
{0x080D0144, nullptr, "ControlArchive"}, |
|||
{0x080E0080, nullptr, "CloseArchive"}, |
|||
{0x080F0180, nullptr, "FormatThisUserSaveData"}, |
|||
{0x08100200, nullptr, "CreateSystemSaveData"}, |
|||
{0x08110040, nullptr, "DeleteSystemSaveData"}, |
|||
{0x08120080, nullptr, "GetFreeBytes"}, |
|||
{0x08130000, nullptr, "GetCardType"}, |
|||
{0x08140000, nullptr, "GetSdmcArchiveResource"}, |
|||
{0x08150000, nullptr, "GetNandArchiveResource"}, |
|||
{0x08160000, nullptr, "GetSdmcFatfsErro"}, |
|||
{0x08170000, nullptr, "IsSdmcDetected"}, |
|||
{0x08180000, nullptr, "IsSdmcWritable"}, |
|||
{0x08190042, nullptr, "GetSdmcCid"}, |
|||
{0x081A0042, nullptr, "GetNandCid"}, |
|||
{0x081B0000, nullptr, "GetSdmcSpeedInfo"}, |
|||
{0x081C0000, nullptr, "GetNandSpeedInfo"}, |
|||
{0x081D0042, nullptr, "GetSdmcLog"}, |
|||
{0x081E0042, nullptr, "GetNandLog"}, |
|||
{0x081F0000, nullptr, "ClearSdmcLog"}, |
|||
{0x08200000, nullptr, "ClearNandLog"}, |
|||
{0x08210000, nullptr, "CardSlotIsInserted"}, |
|||
{0x08220000, nullptr, "CardSlotPowerOn"}, |
|||
{0x08230000, nullptr, "CardSlotPowerOff"}, |
|||
{0x08240000, nullptr, "CardSlotGetCardIFPowerStatus"}, |
|||
{0x08250040, nullptr, "CardNorDirectCommand"}, |
|||
{0x08260080, nullptr, "CardNorDirectCommandWithAddress"}, |
|||
{0x08270082, nullptr, "CardNorDirectRead"}, |
|||
{0x082800C2, nullptr, "CardNorDirectReadWithAddress"}, |
|||
{0x08290082, nullptr, "CardNorDirectWrite"}, |
|||
{0x082A00C2, nullptr, "CardNorDirectWriteWithAddress"}, |
|||
{0x082B00C2, nullptr, "CardNorDirectRead_4xIO"}, |
|||
{0x082C0082, nullptr, "CardNorDirectCpuWriteWithoutVerify"}, |
|||
{0x082D0040, nullptr, "CardNorDirectSectorEraseWithoutVerify"}, |
|||
{0x082E0040, nullptr, "GetProductInfo"}, |
|||
{0x082F0040, nullptr, "GetProgramLaunchInfo"}, |
|||
{0x08300182, nullptr, "CreateExtSaveData"}, |
|||
{0x08310180, nullptr, "CreateSharedExtSaveData"}, |
|||
{0x08320102, nullptr, "ReadExtSaveDataIcon"}, |
|||
{0x08330082, nullptr, "EnumerateExtSaveData"}, |
|||
{0x08340082, nullptr, "EnumerateSharedExtSaveData"}, |
|||
{0x08350080, nullptr, "DeleteExtSaveData"}, |
|||
{0x08360080, nullptr, "DeleteSharedExtSaveData"}, |
|||
{0x08370040, nullptr, "SetCardSpiBaudRate"}, |
|||
{0x08380040, nullptr, "SetCardSpiBusMode"}, |
|||
{0x08390000, nullptr, "SendInitializeInfoTo9"}, |
|||
{0x083A0100, nullptr, "GetSpecialContentIndex"}, |
|||
{0x083B00C2, nullptr, "GetLegacyRomHeader"}, |
|||
{0x083C00C2, nullptr, "GetLegacyBannerData"}, |
|||
{0x083D0100, nullptr, "CheckAuthorityToAccessExtSaveData"}, |
|||
{0x083E00C2, nullptr, "QueryTotalQuotaSize"}, |
|||
{0x083F00C0, nullptr, "GetExtDataBlockSize"}, |
|||
{0x08400040, nullptr, "AbnegateAccessRight"}, |
|||
{0x08410000, nullptr, "DeleteSdmcRoot"}, |
|||
{0x08420040, nullptr, "DeleteAllExtSaveDataOnNand"}, |
|||
{0x08430000, nullptr, "InitializeCtrFileSystem"}, |
|||
{0x08440000, nullptr, "CreateSeed"}, |
|||
{0x084500C2, nullptr, "GetFormatInfo"}, |
|||
{0x08460102, nullptr, "GetLegacyRomHeader2"}, |
|||
{0x08470180, nullptr, "FormatCtrCardUserSaveData"}, |
|||
{0x08480042, nullptr, "GetSdmcCtrRootPath"}, |
|||
{0x08490040, nullptr, "GetArchiveResource"}, |
|||
{0x084A0002, nullptr, "ExportIntegrityVerificationSeed"}, |
|||
{0x084B0002, nullptr, "ImportIntegrityVerificationSeed"}, |
|||
{0x084C0242, nullptr, "FormatSaveData"}, |
|||
{0x084D0102, nullptr, "GetLegacySubBannerData"}, |
|||
{0x084E0342, nullptr, "UpdateSha256Context"}, |
|||
{0x084F0102, nullptr, "ReadSpecialFile"}, |
|||
{0x08500040, nullptr, "GetSpecialFileSize"}, |
|||
{0x08580000, nullptr, "GetMovableSedHashedKeyYRandomData"}, |
|||
{0x08610042, nullptr, "InitializeWithSdkVersion"}, |
|||
{0x08620040, nullptr, "SetPriority"}, |
|||
{0x08630000, nullptr, "GetPriority"}, |
|||
}; |
|||
|
|||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
// Interface class
|
|||
|
|||
Interface::Interface() { |
|||
Register(FunctionTable, ARRAY_SIZE(FunctionTable)); |
|||
} |
|||
|
|||
Interface::~Interface() { |
|||
} |
|||
|
|||
} // namespace
|
|||
@ -0,0 +1,31 @@ |
|||
// Copyright 2014 Citra Emulator Project |
|||
// Licensed under GPLv2 |
|||
// Refer to the license.txt file included. |
|||
|
|||
#pragma once |
|||
|
|||
#include "core/hle/service/service.h" |
|||
|
|||
//////////////////////////////////////////////////////////////////////////////////////////////////// |
|||
// Namespace FS_User |
|||
|
|||
namespace FS_User { |
|||
|
|||
/// Interface to "fs:USER" service |
|||
class Interface : public Service::Interface { |
|||
public: |
|||
|
|||
Interface(); |
|||
|
|||
~Interface(); |
|||
|
|||
/** |
|||
* Gets the string port name used by CTROS for the service |
|||
* @return Port name of service |
|||
*/ |
|||
const char *GetPortName() const { |
|||
return "Ufs:"; |
|||
} |
|||
}; |
|||
|
|||
} // namespace |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue