diff options
| author | 2015-01-13 17:39:33 -0500 | |
|---|---|---|
| committer | 2015-01-13 17:39:33 -0500 | |
| commit | 7bbd027660a77f6f23bb84d4e5789e902ba69f6e (patch) | |
| tree | d3f8ce6365cf5be67b9d3c4a8b4ba77f58e1e4fc /src | |
| parent | Merge pull request #477 from lioncash/vfp (diff) | |
| parent | Services: Added some missing services. (diff) | |
| download | yuzu-7bbd027660a77f6f23bb84d4e5789e902ba69f6e.tar.gz yuzu-7bbd027660a77f6f23bb84d4e5789e902ba69f6e.tar.xz yuzu-7bbd027660a77f6f23bb84d4e5789e902ba69f6e.zip | |
Merge pull request #479 from Subv/hm
Services: Added some missing services.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | src/core/hle/service/apt_s.cpp | 121 | ||||
| -rw-r--r-- | src/core/hle/service/apt_s.h | 30 | ||||
| -rw-r--r-- | src/core/hle/service/apt_u.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/service/cfg/cfg_s.cpp | 98 | ||||
| -rw-r--r-- | src/core/hle/service/cfg/cfg_s.h | 23 | ||||
| -rw-r--r-- | src/core/hle/service/ptm_sysm.cpp | 56 | ||||
| -rw-r--r-- | src/core/hle/service/ptm_sysm.h | 23 | ||||
| -rw-r--r-- | src/core/hle/service/service.cpp | 6 |
9 files changed, 364 insertions, 1 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 8723a471f..9aabd7e3a 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -38,11 +38,13 @@ set(SRCS | |||
| 38 | hle/service/am_app.cpp | 38 | hle/service/am_app.cpp |
| 39 | hle/service/am_net.cpp | 39 | hle/service/am_net.cpp |
| 40 | hle/service/apt_a.cpp | 40 | hle/service/apt_a.cpp |
| 41 | hle/service/apt_s.cpp | ||
| 41 | hle/service/apt_u.cpp | 42 | hle/service/apt_u.cpp |
| 42 | hle/service/boss_u.cpp | 43 | hle/service/boss_u.cpp |
| 43 | hle/service/cecd_u.cpp | 44 | hle/service/cecd_u.cpp |
| 44 | hle/service/cfg/cfg.cpp | 45 | hle/service/cfg/cfg.cpp |
| 45 | hle/service/cfg/cfg_i.cpp | 46 | hle/service/cfg/cfg_i.cpp |
| 47 | hle/service/cfg/cfg_s.cpp | ||
| 46 | hle/service/cfg/cfg_u.cpp | 48 | hle/service/cfg/cfg_u.cpp |
| 47 | hle/service/csnd_snd.cpp | 49 | hle/service/csnd_snd.cpp |
| 48 | hle/service/dsp_dsp.cpp | 50 | hle/service/dsp_dsp.cpp |
| @@ -63,6 +65,7 @@ set(SRCS | |||
| 63 | hle/service/nwm_uds.cpp | 65 | hle/service/nwm_uds.cpp |
| 64 | hle/service/pm_app.cpp | 66 | hle/service/pm_app.cpp |
| 65 | hle/service/ptm_u.cpp | 67 | hle/service/ptm_u.cpp |
| 68 | hle/service/ptm_sysm.cpp | ||
| 66 | hle/service/service.cpp | 69 | hle/service/service.cpp |
| 67 | hle/service/soc_u.cpp | 70 | hle/service/soc_u.cpp |
| 68 | hle/service/srv.cpp | 71 | hle/service/srv.cpp |
| @@ -131,11 +134,13 @@ set(HEADERS | |||
| 131 | hle/service/am_app.h | 134 | hle/service/am_app.h |
| 132 | hle/service/am_net.h | 135 | hle/service/am_net.h |
| 133 | hle/service/apt_a.h | 136 | hle/service/apt_a.h |
| 137 | hle/service/apt_s.h | ||
| 134 | hle/service/apt_u.h | 138 | hle/service/apt_u.h |
| 135 | hle/service/boss_u.h | 139 | hle/service/boss_u.h |
| 136 | hle/service/cecd_u.h | 140 | hle/service/cecd_u.h |
| 137 | hle/service/cfg/cfg.h | 141 | hle/service/cfg/cfg.h |
| 138 | hle/service/cfg/cfg_i.h | 142 | hle/service/cfg/cfg_i.h |
| 143 | hle/service/cfg/cfg_s.h | ||
| 139 | hle/service/cfg/cfg_u.h | 144 | hle/service/cfg/cfg_u.h |
| 140 | hle/service/csnd_snd.h | 145 | hle/service/csnd_snd.h |
| 141 | hle/service/dsp_dsp.h | 146 | hle/service/dsp_dsp.h |
| @@ -156,6 +161,7 @@ set(HEADERS | |||
| 156 | hle/service/nwm_uds.h | 161 | hle/service/nwm_uds.h |
| 157 | hle/service/pm_app.h | 162 | hle/service/pm_app.h |
| 158 | hle/service/ptm_u.h | 163 | hle/service/ptm_u.h |
| 164 | hle/service/ptm_sysm.h | ||
| 159 | hle/service/service.h | 165 | hle/service/service.h |
| 160 | hle/service/soc_u.h | 166 | hle/service/soc_u.h |
| 161 | hle/service/srv.h | 167 | hle/service/srv.h |
diff --git a/src/core/hle/service/apt_s.cpp b/src/core/hle/service/apt_s.cpp new file mode 100644 index 000000000..f4599e19d --- /dev/null +++ b/src/core/hle/service/apt_s.cpp | |||
| @@ -0,0 +1,121 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | |||
| 6 | #include "common/common.h" | ||
| 7 | #include "common/file_util.h" | ||
| 8 | |||
| 9 | #include "core/hle/hle.h" | ||
| 10 | #include "core/hle/kernel/event.h" | ||
| 11 | #include "core/hle/kernel/mutex.h" | ||
| 12 | #include "core/hle/kernel/shared_memory.h" | ||
| 13 | #include "core/hle/service/apt_s.h" | ||
| 14 | |||
| 15 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 16 | // Namespace APT_S | ||
| 17 | |||
| 18 | namespace APT_U { | ||
| 19 | extern void GetLockHandle(Service::Interface* self); | ||
| 20 | extern void Initialize(Service::Interface* self); | ||
| 21 | extern void Enable(Service::Interface* self); | ||
| 22 | extern void InquireNotification(Service::Interface* self); | ||
| 23 | extern void GetSharedFont(Service::Interface* self); | ||
| 24 | extern void AppletUtility(Service::Interface* self); | ||
| 25 | extern void GlanceParameter(Service::Interface* self); | ||
| 26 | extern void ReceiveParameter(Service::Interface* self); | ||
| 27 | } | ||
| 28 | |||
| 29 | namespace APT_S { | ||
| 30 | |||
| 31 | const Interface::FunctionInfo FunctionTable[] = { | ||
| 32 | {0x00010040, APT_U::GetLockHandle, "GetLockHandle"}, | ||
| 33 | {0x00020080, APT_U::Initialize, "Initialize"}, | ||
| 34 | {0x00030040, APT_U::Enable, "Enable"}, | ||
| 35 | {0x00040040, nullptr, "Finalize"}, | ||
| 36 | {0x00050040, nullptr, "GetAppletManInfo"}, | ||
| 37 | {0x00060040, nullptr, "GetAppletInfo"}, | ||
| 38 | {0x00070000, nullptr, "GetLastSignaledAppletId"}, | ||
| 39 | {0x00080000, nullptr, "CountRegisteredApplet"}, | ||
| 40 | {0x00090040, nullptr, "IsRegistered"}, | ||
| 41 | {0x000A0040, nullptr, "GetAttribute"}, | ||
| 42 | {0x000B0040, APT_U::InquireNotification, "InquireNotification"}, | ||
| 43 | {0x000C0104, nullptr, "SendParameter"}, | ||
| 44 | {0x000D0080, APT_U::ReceiveParameter, "ReceiveParameter"}, | ||
| 45 | {0x000E0080, APT_U::GlanceParameter, "GlanceParameter"}, | ||
| 46 | {0x000F0100, nullptr, "CancelParameter"}, | ||
| 47 | {0x001000C2, nullptr, "DebugFunc"}, | ||
| 48 | {0x001100C0, nullptr, "MapProgramIdForDebug"}, | ||
| 49 | {0x00120040, nullptr, "SetHomeMenuAppletIdForDebug"}, | ||
| 50 | {0x00130000, nullptr, "GetPreparationState"}, | ||
| 51 | {0x00140040, nullptr, "SetPreparationState"}, | ||
| 52 | {0x00150140, nullptr, "PrepareToStartApplication"}, | ||
| 53 | {0x00160040, nullptr, "PreloadLibraryApplet"}, | ||
| 54 | {0x00170040, nullptr, "FinishPreloadingLibraryApplet"}, | ||
| 55 | {0x00180040, nullptr, "PrepareToStartLibraryApplet"}, | ||
| 56 | {0x00190040, nullptr, "PrepareToStartSystemApplet"}, | ||
| 57 | {0x001A0000, nullptr, "PrepareToStartNewestHomeMenu"}, | ||
| 58 | {0x001B00C4, nullptr, "StartApplication"}, | ||
| 59 | {0x001C0000, nullptr, "WakeupApplication"}, | ||
| 60 | {0x001D0000, nullptr, "CancelApplication"}, | ||
| 61 | {0x001E0084, nullptr, "StartLibraryApplet"}, | ||
| 62 | {0x001F0084, nullptr, "StartSystemApplet"}, | ||
| 63 | {0x00200044, nullptr, "StartNewestHomeMenu"}, | ||
| 64 | {0x00210000, nullptr, "OrderToCloseApplication"}, | ||
| 65 | {0x00220040, nullptr, "PrepareToCloseApplication"}, | ||
| 66 | {0x00230040, nullptr, "PrepareToJumpToApplication"}, | ||
| 67 | {0x00240044, nullptr, "JumpToApplication"}, | ||
| 68 | {0x002500C0, nullptr, "PrepareToCloseLibraryApplet"}, | ||
| 69 | {0x00260000, nullptr, "PrepareToCloseSystemApplet"}, | ||
| 70 | {0x00270044, nullptr, "CloseApplication"}, | ||
| 71 | {0x00280044, nullptr, "CloseLibraryApplet"}, | ||
| 72 | {0x00290044, nullptr, "CloseSystemApplet"}, | ||
| 73 | {0x002A0000, nullptr, "OrderToCloseSystemApplet"}, | ||
| 74 | {0x002B0000, nullptr, "PrepareToJumpToHomeMenu"}, | ||
| 75 | {0x002C0044, nullptr, "JumpToHomeMenu"}, | ||
| 76 | {0x002D0000, nullptr, "PrepareToLeaveHomeMenu"}, | ||
| 77 | {0x002E0044, nullptr, "LeaveHomeMenu"}, | ||
| 78 | {0x002F0040, nullptr, "PrepareToLeaveResidentApplet"}, | ||
| 79 | {0x00300044, nullptr, "LeaveResidentApplet"}, | ||
| 80 | {0x00310100, nullptr, "PrepareToDoApplicationJump"}, | ||
| 81 | {0x00320084, nullptr, "DoApplicationJump"}, | ||
| 82 | {0x00330000, nullptr, "GetProgramIdOnApplicationJump"}, | ||
| 83 | {0x00340084, nullptr, "SendDeliverArg"}, | ||
| 84 | {0x00350080, nullptr, "ReceiveDeliverArg"}, | ||
| 85 | {0x00360040, nullptr, "LoadSysMenuArg"}, | ||
| 86 | {0x00370042, nullptr, "StoreSysMenuArg"}, | ||
| 87 | {0x00380040, nullptr, "PreloadResidentApplet"}, | ||
| 88 | {0x00390040, nullptr, "PrepareToStartResidentApplet"}, | ||
| 89 | {0x003A0044, nullptr, "StartResidentApplet"}, | ||
| 90 | {0x003B0040, nullptr, "CancelLibraryApplet"}, | ||
| 91 | {0x003C0042, nullptr, "SendDspSleep"}, | ||
| 92 | {0x003D0042, nullptr, "SendDspWakeUp"}, | ||
| 93 | {0x003E0080, nullptr, "ReplySleepQuery"}, | ||
| 94 | {0x003F0040, nullptr, "ReplySleepNotificationComplete"}, | ||
| 95 | {0x00400042, nullptr, "SendCaptureBufferInfo"}, | ||
| 96 | {0x00410040, nullptr, "ReceiveCaptureBufferInfo"}, | ||
| 97 | {0x00420080, nullptr, "SleepSystem"}, | ||
| 98 | {0x00430040, nullptr, "NotifyToWait"}, | ||
| 99 | {0x00440000, APT_U::GetSharedFont, "GetSharedFont"}, | ||
| 100 | {0x00450040, nullptr, "GetWirelessRebootInfo"}, | ||
| 101 | {0x00460104, nullptr, "Wrap"}, | ||
| 102 | {0x00470104, nullptr, "Unwrap"}, | ||
| 103 | {0x00480100, nullptr, "GetProgramInfo"}, | ||
| 104 | {0x00490180, nullptr, "Reboot"}, | ||
| 105 | {0x004A0040, nullptr, "GetCaptureInfo"}, | ||
| 106 | {0x004B00C2, APT_U::AppletUtility, "AppletUtility"}, | ||
| 107 | {0x004C0000, nullptr, "SetFatalErrDispMode"}, | ||
| 108 | {0x004D0080, nullptr, "GetAppletProgramInfo"}, | ||
| 109 | {0x004E0000, nullptr, "HardwareResetAsync"}, | ||
| 110 | {0x004F0080, nullptr, "SetApplicationCpuTimeLimit"}, | ||
| 111 | {0x00500040, nullptr, "GetApplicationCpuTimeLimit"}, | ||
| 112 | }; | ||
| 113 | |||
| 114 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 115 | // Interface class | ||
| 116 | |||
| 117 | Interface::Interface() { | ||
| 118 | Register(FunctionTable, ARRAY_SIZE(FunctionTable)); | ||
| 119 | } | ||
| 120 | |||
| 121 | } // namespace | ||
diff --git a/src/core/hle/service/apt_s.h b/src/core/hle/service/apt_s.h new file mode 100644 index 000000000..f097c9747 --- /dev/null +++ b/src/core/hle/service/apt_s.h | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 10 | // Namespace APT_S | ||
| 11 | |||
| 12 | namespace APT_S { | ||
| 13 | |||
| 14 | // Application and title launching service. These services handle signaling for home/power button as | ||
| 15 | // well. Only one session for either APT service can be open at a time, normally processes close the | ||
| 16 | // service handle immediately once finished using the service. The commands for APT:U and APT:S are | ||
| 17 | // exactly the same, however certain commands are only accessible with APT:S(NS module will call | ||
| 18 | // svcBreak when the command isn't accessible). See http://3dbrew.org/wiki/NS#APT_Services. | ||
| 19 | |||
| 20 | /// Interface to "APT:S" service | ||
| 21 | class Interface : public Service::Interface { | ||
| 22 | public: | ||
| 23 | Interface(); | ||
| 24 | |||
| 25 | std::string GetPortName() const override { | ||
| 26 | return "APT:S"; | ||
| 27 | } | ||
| 28 | }; | ||
| 29 | |||
| 30 | } // namespace | ||
diff --git a/src/core/hle/service/apt_u.cpp b/src/core/hle/service/apt_u.cpp index d0ff4e585..a38621088 100644 --- a/src/core/hle/service/apt_u.cpp +++ b/src/core/hle/service/apt_u.cpp | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | #include "core/hle/kernel/event.h" | 10 | #include "core/hle/kernel/event.h" |
| 11 | #include "core/hle/kernel/mutex.h" | 11 | #include "core/hle/kernel/mutex.h" |
| 12 | #include "core/hle/kernel/shared_memory.h" | 12 | #include "core/hle/kernel/shared_memory.h" |
| 13 | #include "apt_u.h" | 13 | #include "core/hle/service/apt_u.h" |
| 14 | 14 | ||
| 15 | //////////////////////////////////////////////////////////////////////////////////////////////////// | 15 | //////////////////////////////////////////////////////////////////////////////////////////////////// |
| 16 | // Namespace APT_U | 16 | // Namespace APT_U |
diff --git a/src/core/hle/service/cfg/cfg_s.cpp b/src/core/hle/service/cfg/cfg_s.cpp new file mode 100644 index 000000000..cf4e82152 --- /dev/null +++ b/src/core/hle/service/cfg/cfg_s.cpp | |||
| @@ -0,0 +1,98 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "common/log.h" | ||
| 6 | #include "core/hle/hle.h" | ||
| 7 | #include "core/hle/service/cfg/cfg.h" | ||
| 8 | #include "core/hle/service/cfg/cfg_s.h" | ||
| 9 | |||
| 10 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 11 | // Namespace CFG_S | ||
| 12 | |||
| 13 | namespace CFG_S { | ||
| 14 | |||
| 15 | /** | ||
| 16 | * CFG_S::GetConfigInfoBlk2 service function | ||
| 17 | * Inputs: | ||
| 18 | * 0 : 0x00010082 | ||
| 19 | * 1 : Size | ||
| 20 | * 2 : Block ID | ||
| 21 | * 3 : Descriptor for the output buffer | ||
| 22 | * 4 : Output buffer pointer | ||
| 23 | * Outputs: | ||
| 24 | * 1 : Result of function, 0 on success, otherwise error code | ||
| 25 | */ | ||
| 26 | static void GetConfigInfoBlk2(Service::Interface* self) { | ||
| 27 | u32* cmd_buffer = Kernel::GetCommandBuffer(); | ||
| 28 | u32 size = cmd_buffer[1]; | ||
| 29 | u32 block_id = cmd_buffer[2]; | ||
| 30 | u8* data_pointer = Memory::GetPointer(cmd_buffer[4]); | ||
| 31 | |||
| 32 | if (data_pointer == nullptr) { | ||
| 33 | cmd_buffer[1] = -1; // TODO(Subv): Find the right error code | ||
| 34 | return; | ||
| 35 | } | ||
| 36 | |||
| 37 | cmd_buffer[1] = Service::CFG::GetConfigInfoBlock(block_id, size, 0x2, data_pointer).raw; | ||
| 38 | } | ||
| 39 | |||
| 40 | /** | ||
| 41 | * CFG_S::GetConfigInfoBlk8 service function | ||
| 42 | * Inputs: | ||
| 43 | * 0 : 0x04010082 | ||
| 44 | * 1 : Size | ||
| 45 | * 2 : Block ID | ||
| 46 | * 3 : Descriptor for the output buffer | ||
| 47 | * 4 : Output buffer pointer | ||
| 48 | * Outputs: | ||
| 49 | * 1 : Result of function, 0 on success, otherwise error code | ||
| 50 | */ | ||
| 51 | static void GetConfigInfoBlk8(Service::Interface* self) { | ||
| 52 | u32* cmd_buffer = Kernel::GetCommandBuffer(); | ||
| 53 | u32 size = cmd_buffer[1]; | ||
| 54 | u32 block_id = cmd_buffer[2]; | ||
| 55 | u8* data_pointer = Memory::GetPointer(cmd_buffer[4]); | ||
| 56 | |||
| 57 | if (data_pointer == nullptr) { | ||
| 58 | cmd_buffer[1] = -1; // TODO(Subv): Find the right error code | ||
| 59 | return; | ||
| 60 | } | ||
| 61 | |||
| 62 | cmd_buffer[1] = Service::CFG::GetConfigInfoBlock(block_id, size, 0x8, data_pointer).raw; | ||
| 63 | } | ||
| 64 | |||
| 65 | /** | ||
| 66 | * CFG_S::UpdateConfigNANDSavegame service function | ||
| 67 | * Inputs: | ||
| 68 | * 0 : 0x04030000 | ||
| 69 | * Outputs: | ||
| 70 | * 1 : Result of function, 0 on success, otherwise error code | ||
| 71 | */ | ||
| 72 | static void UpdateConfigNANDSavegame(Service::Interface* self) { | ||
| 73 | u32* cmd_buffer = Kernel::GetCommandBuffer(); | ||
| 74 | cmd_buffer[1] = Service::CFG::UpdateConfigNANDSavegame().raw; | ||
| 75 | } | ||
| 76 | |||
| 77 | const Interface::FunctionInfo FunctionTable[] = { | ||
| 78 | {0x00010082, GetConfigInfoBlk2, "GetConfigInfoBlk2"}, | ||
| 79 | {0x00020000, nullptr, "SecureInfoGetRegion"}, | ||
| 80 | {0x04010082, GetConfigInfoBlk8, "GetConfigInfoBlk8"}, | ||
| 81 | {0x04020082, nullptr, "SetConfigInfoBlk4"}, | ||
| 82 | {0x04030000, UpdateConfigNANDSavegame, "UpdateConfigNANDSavegame"}, | ||
| 83 | {0x04040042, nullptr, "GetLocalFriendCodeSeedData"}, | ||
| 84 | {0x04050000, nullptr, "GetLocalFriendCodeSeed"}, | ||
| 85 | {0x04060000, nullptr, "SecureInfoGetRegion"}, | ||
| 86 | {0x04070000, nullptr, "SecureInfoGetByte101"}, | ||
| 87 | {0x04080042, nullptr, "SecureInfoGetSerialNo"}, | ||
| 88 | {0x04090000, nullptr, "UpdateConfigBlk00040003"}, | ||
| 89 | }; | ||
| 90 | |||
| 91 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 92 | // Interface class | ||
| 93 | |||
| 94 | Interface::Interface() { | ||
| 95 | Register(FunctionTable, ARRAY_SIZE(FunctionTable)); | ||
| 96 | } | ||
| 97 | |||
| 98 | } // namespace | ||
diff --git a/src/core/hle/service/cfg/cfg_s.h b/src/core/hle/service/cfg/cfg_s.h new file mode 100644 index 000000000..d8b67137f --- /dev/null +++ b/src/core/hle/service/cfg/cfg_s.h | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 10 | // Namespace CFG_S | ||
| 11 | |||
| 12 | namespace CFG_S { | ||
| 13 | |||
| 14 | class Interface : public Service::Interface { | ||
| 15 | public: | ||
| 16 | Interface(); | ||
| 17 | |||
| 18 | std::string GetPortName() const override { | ||
| 19 | return "cfg:s"; | ||
| 20 | } | ||
| 21 | }; | ||
| 22 | |||
| 23 | } // namespace | ||
diff --git a/src/core/hle/service/ptm_sysm.cpp b/src/core/hle/service/ptm_sysm.cpp new file mode 100644 index 000000000..4b5f86a47 --- /dev/null +++ b/src/core/hle/service/ptm_sysm.cpp | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "common/log.h" | ||
| 6 | #include "common/make_unique.h" | ||
| 7 | #include "core/file_sys/archive_extsavedata.h" | ||
| 8 | #include "core/hle/hle.h" | ||
| 9 | #include "core/hle/service/ptm_sysm.h" | ||
| 10 | |||
| 11 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 12 | // Namespace PTM_SYSM | ||
| 13 | |||
| 14 | namespace PTM_SYSM { | ||
| 15 | |||
| 16 | const Interface::FunctionInfo FunctionTable[] = { | ||
| 17 | {0x040100C0, nullptr, "SetRtcAlarmEx"}, | ||
| 18 | {0x04020042, nullptr, "ReplySleepQuery"}, | ||
| 19 | {0x04030042, nullptr, "NotifySleepPreparationComplete"}, | ||
| 20 | {0x04040102, nullptr, "SetWakeupTrigger"}, | ||
| 21 | {0x04050000, nullptr, "GetAwakeReason"}, | ||
| 22 | {0x04060000, nullptr, "RequestSleep"}, | ||
| 23 | {0x040700C0, nullptr, "ShutdownAsync"}, | ||
| 24 | {0x04080000, nullptr, "Awake"}, | ||
| 25 | {0x04090080, nullptr, "RebootAsync"}, | ||
| 26 | {0x040A0000, nullptr, "CheckNew3DS"}, | ||
| 27 | {0x08010640, nullptr, "SetInfoLEDPattern"}, | ||
| 28 | {0x08020040, nullptr, "SetInfoLEDPatternHeader"}, | ||
| 29 | {0x08030000, nullptr, "GetInfoLEDStatus"}, | ||
| 30 | {0x08040040, nullptr, "SetBatteryEmptyLEDPattern"}, | ||
| 31 | {0x08050000, nullptr, "ClearStepHistory"}, | ||
| 32 | {0x080600C2, nullptr, "SetStepHistory"}, | ||
| 33 | {0x08070082, nullptr, "GetPlayHistory"}, | ||
| 34 | {0x08080000, nullptr, "GetPlayHistoryStart"}, | ||
| 35 | {0x08090000, nullptr, "GetPlayHistoryLength"}, | ||
| 36 | {0x080A0000, nullptr, "ClearPlayHistory"}, | ||
| 37 | {0x080B0080, nullptr, "CalcPlayHistoryStart"}, | ||
| 38 | {0x080C0080, nullptr, "SetUserTime"}, | ||
| 39 | {0x080D0000, nullptr, "InvalidateSystemTime"}, | ||
| 40 | {0x080E0140, nullptr, "NotifyPlayEvent"}, | ||
| 41 | {0x080F0000, nullptr, "IsLegacyPowerOff"}, | ||
| 42 | {0x08100000, nullptr, "ClearLegacyPowerOff"}, | ||
| 43 | {0x08110000, nullptr, "GetShellStatus"}, | ||
| 44 | {0x08120000, nullptr, "IsShutdownByBatteryEmpty"}, | ||
| 45 | {0x08130000, nullptr, "FormatSavedata"}, | ||
| 46 | {0x08140000, nullptr, "GetLegacyJumpProhibitedFlag"} | ||
| 47 | }; | ||
| 48 | |||
| 49 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 50 | // Interface class | ||
| 51 | |||
| 52 | Interface::Interface() { | ||
| 53 | Register(FunctionTable, ARRAY_SIZE(FunctionTable)); | ||
| 54 | } | ||
| 55 | |||
| 56 | } // namespace | ||
diff --git a/src/core/hle/service/ptm_sysm.h b/src/core/hle/service/ptm_sysm.h new file mode 100644 index 000000000..0f267b214 --- /dev/null +++ b/src/core/hle/service/ptm_sysm.h | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | //////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 10 | // Namespace PTM_SYSM | ||
| 11 | |||
| 12 | namespace PTM_SYSM { | ||
| 13 | |||
| 14 | class Interface : public Service::Interface { | ||
| 15 | public: | ||
| 16 | Interface(); | ||
| 17 | |||
| 18 | std::string GetPortName() const override { | ||
| 19 | return "ptm:sysm"; | ||
| 20 | } | ||
| 21 | }; | ||
| 22 | |||
| 23 | } // namespace | ||
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 33c29a4a0..446ed5164 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -11,10 +11,12 @@ | |||
| 11 | #include "core/hle/service/am_app.h" | 11 | #include "core/hle/service/am_app.h" |
| 12 | #include "core/hle/service/am_net.h" | 12 | #include "core/hle/service/am_net.h" |
| 13 | #include "core/hle/service/apt_a.h" | 13 | #include "core/hle/service/apt_a.h" |
| 14 | #include "core/hle/service/apt_s.h" | ||
| 14 | #include "core/hle/service/apt_u.h" | 15 | #include "core/hle/service/apt_u.h" |
| 15 | #include "core/hle/service/boss_u.h" | 16 | #include "core/hle/service/boss_u.h" |
| 16 | #include "core/hle/service/cecd_u.h" | 17 | #include "core/hle/service/cecd_u.h" |
| 17 | #include "core/hle/service/cfg/cfg_i.h" | 18 | #include "core/hle/service/cfg/cfg_i.h" |
| 19 | #include "core/hle/service/cfg/cfg_s.h" | ||
| 18 | #include "core/hle/service/cfg/cfg_u.h" | 20 | #include "core/hle/service/cfg/cfg_u.h" |
| 19 | #include "core/hle/service/csnd_snd.h" | 21 | #include "core/hle/service/csnd_snd.h" |
| 20 | #include "core/hle/service/dsp_dsp.h" | 22 | #include "core/hle/service/dsp_dsp.h" |
| @@ -34,6 +36,7 @@ | |||
| 34 | #include "core/hle/service/nwm_uds.h" | 36 | #include "core/hle/service/nwm_uds.h" |
| 35 | #include "core/hle/service/pm_app.h" | 37 | #include "core/hle/service/pm_app.h" |
| 36 | #include "core/hle/service/ptm_u.h" | 38 | #include "core/hle/service/ptm_u.h" |
| 39 | #include "core/hle/service/ptm_sysm.h" | ||
| 37 | #include "core/hle/service/soc_u.h" | 40 | #include "core/hle/service/soc_u.h" |
| 38 | #include "core/hle/service/srv.h" | 41 | #include "core/hle/service/srv.h" |
| 39 | #include "core/hle/service/ssl_c.h" | 42 | #include "core/hle/service/ssl_c.h" |
| @@ -85,10 +88,12 @@ void Init() { | |||
| 85 | g_manager->AddService(new AM_APP::Interface); | 88 | g_manager->AddService(new AM_APP::Interface); |
| 86 | g_manager->AddService(new AM_NET::Interface); | 89 | g_manager->AddService(new AM_NET::Interface); |
| 87 | g_manager->AddService(new APT_A::Interface); | 90 | g_manager->AddService(new APT_A::Interface); |
| 91 | g_manager->AddService(new APT_S::Interface); | ||
| 88 | g_manager->AddService(new APT_U::Interface); | 92 | g_manager->AddService(new APT_U::Interface); |
| 89 | g_manager->AddService(new BOSS_U::Interface); | 93 | g_manager->AddService(new BOSS_U::Interface); |
| 90 | g_manager->AddService(new CECD_U::Interface); | 94 | g_manager->AddService(new CECD_U::Interface); |
| 91 | g_manager->AddService(new CFG_I::Interface); | 95 | g_manager->AddService(new CFG_I::Interface); |
| 96 | g_manager->AddService(new CFG_S::Interface); | ||
| 92 | g_manager->AddService(new CFG_U::Interface); | 97 | g_manager->AddService(new CFG_U::Interface); |
| 93 | g_manager->AddService(new CSND_SND::Interface); | 98 | g_manager->AddService(new CSND_SND::Interface); |
| 94 | g_manager->AddService(new DSP_DSP::Interface); | 99 | g_manager->AddService(new DSP_DSP::Interface); |
| @@ -108,6 +113,7 @@ void Init() { | |||
| 108 | g_manager->AddService(new NWM_UDS::Interface); | 113 | g_manager->AddService(new NWM_UDS::Interface); |
| 109 | g_manager->AddService(new PM_APP::Interface); | 114 | g_manager->AddService(new PM_APP::Interface); |
| 110 | g_manager->AddService(new PTM_U::Interface); | 115 | g_manager->AddService(new PTM_U::Interface); |
| 116 | g_manager->AddService(new PTM_SYSM::Interface); | ||
| 111 | g_manager->AddService(new SOC_U::Interface); | 117 | g_manager->AddService(new SOC_U::Interface); |
| 112 | g_manager->AddService(new SSL_C::Interface); | 118 | g_manager->AddService(new SSL_C::Interface); |
| 113 | g_manager->AddService(new Y2R_U::Interface); | 119 | g_manager->AddService(new Y2R_U::Interface); |