From a1efcd9832ae4caa149e501c739fd9d177342a4c Mon Sep 17 00:00:00 2001
From: georgemoralis <giorgosmrls@gmail.com>
Date: Sat, 8 Jun 2024 22:41:25 +0300
Subject: [PATCH] added rtc and disc_map modules

---
 CMakeLists.txt                               |   5 +
 src/common/logging/filter.cpp                |   2 +
 src/common/logging/types.h                   |   2 +
 src/core/libraries/disc_map/disc_map.cpp     |  48 +++
 src/core/libraries/disc_map/disc_map.h       |  20 ++
 src/core/libraries/disc_map/disc_map_codes.h |  10 +
 src/core/libraries/libs.cpp                  |   4 +
 src/core/libraries/rtc/rtc.cpp               | 303 +++++++++++++++++++
 src/core/libraries/rtc/rtc.h                 |  67 ++++
 9 files changed, 461 insertions(+)
 create mode 100644 src/core/libraries/disc_map/disc_map.cpp
 create mode 100644 src/core/libraries/disc_map/disc_map.h
 create mode 100644 src/core/libraries/disc_map/disc_map_codes.h
 create mode 100644 src/core/libraries/rtc/rtc.cpp
 create mode 100644 src/core/libraries/rtc/rtc.h

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 17ca8ec0..d706359c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -154,6 +154,11 @@ set(SYSTEM_LIBS src/core/libraries/system/commondialog.cpp
                 src/core/libraries/system/userservice.h
                 src/core/libraries/app_content/app_content.cpp
                 src/core/libraries/app_content/app_content.h
+                src/core/libraries/rtc/rtc.cpp
+                src/core/libraries/rtc/rtc.h
+                src/core/libraries/disc_map/disc_map.cpp
+                src/core/libraries/disc_map/disc_map.h
+                src/core/libraries/disc_map/disc_map_codes.h
 )
 
 set(VIDEOOUT_LIB src/core/libraries/videoout/buffer.h
diff --git a/src/common/logging/filter.cpp b/src/common/logging/filter.cpp
index e6e79def..1e49561c 100644
--- a/src/common/logging/filter.cpp
+++ b/src/common/logging/filter.cpp
@@ -102,6 +102,8 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
     SUB(Lib, Screenshot)                                                                           \
     SUB(Lib, LibCInternal)                                                                         \
     SUB(Lib, AppContent)                                                                           \
+    SUB(Lib, Rtc)                                                                                  \
+    SUB(Lib, DiscMap)                                                                              \
     CLS(Frontend)                                                                                  \
     CLS(Render)                                                                                    \
     SUB(Render, Vulkan)                                                                            \
diff --git a/src/common/logging/types.h b/src/common/logging/types.h
index 2defd7be..af52df88 100644
--- a/src/common/logging/types.h
+++ b/src/common/logging/types.h
@@ -69,6 +69,8 @@ enum class Class : u8 {
     Lib_Screenshot,     ///< The LibSceScreenshot implementation
     Lib_LibCInternal,   ///< The LibCInternal implementation.
     Lib_AppContent,     ///< The LibSceAppContent implementation.
+    Lib_Rtc,            ///< The LibSceRtc implementation.
+    Lib_DiscMap,        ///< The LibSceDiscMap implementation.
     Frontend,           ///< Emulator UI
     Render,             ///< Video Core
     Render_Vulkan,      ///< Vulkan backend
diff --git a/src/core/libraries/disc_map/disc_map.cpp b/src/core/libraries/disc_map/disc_map.cpp
new file mode 100644
index 00000000..7fd5ed3c
--- /dev/null
+++ b/src/core/libraries/disc_map/disc_map.cpp
@@ -0,0 +1,48 @@
+// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+// Generated By moduleGenerator
+#include "common/logging/log.h"
+#include "core/libraries/error_codes.h"
+#include "core/libraries/libs.h"
+#include "disc_map.h"
+#include "disc_map_codes.h"
+
+namespace Libraries::DiscMap {
+
+int PS4_SYSV_ABI sceDiscMapGetPackageSize() {
+    LOG_WARNING(Lib_DiscMap, "(DUMMY) called");
+    return ORBIS_DISC_MAP_ERROR_NO_BITMAP_INFO;
+}
+
+int PS4_SYSV_ABI sceDiscMapIsRequestOnHDD() {
+    LOG_WARNING(Lib_DiscMap, "(DUMMY) called");
+    return ORBIS_DISC_MAP_ERROR_NO_BITMAP_INFO;
+}
+
+int PS4_SYSV_ABI Func_7C980FFB0AA27E7A() {
+    LOG_ERROR(Lib_DiscMap, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI Func_8A828CAEE7EDD5E9() {
+    LOG_ERROR(Lib_DiscMap, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI Func_E7EBCE96E92F91F8() {
+    LOG_ERROR(Lib_DiscMap, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+void RegisterlibSceDiscMap(Core::Loader::SymbolsResolver* sym) {
+    LIB_FUNCTION("fl1eoDnwQ4s", "libSceDiscMap", 1, "libSceDiscMap", 1, 1,
+                 sceDiscMapGetPackageSize);
+    LIB_FUNCTION("lbQKqsERhtE", "libSceDiscMap", 1, "libSceDiscMap", 1, 1,
+                 sceDiscMapIsRequestOnHDD);
+    LIB_FUNCTION("fJgP+wqifno", "libSceDiscMap", 1, "libSceDiscMap", 1, 1, Func_7C980FFB0AA27E7A);
+    LIB_FUNCTION("ioKMruft1ek", "libSceDiscMap", 1, "libSceDiscMap", 1, 1, Func_8A828CAEE7EDD5E9);
+    LIB_FUNCTION("5+vOlukvkfg", "libSceDiscMap", 1, "libSceDiscMap", 1, 1, Func_E7EBCE96E92F91F8);
+};
+
+} // namespace Libraries::DiscMap
\ No newline at end of file
diff --git a/src/core/libraries/disc_map/disc_map.h b/src/core/libraries/disc_map/disc_map.h
new file mode 100644
index 00000000..08abee63
--- /dev/null
+++ b/src/core/libraries/disc_map/disc_map.h
@@ -0,0 +1,20 @@
+// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "common/types.h"
+
+namespace Core::Loader {
+class SymbolsResolver;
+}
+namespace Libraries::DiscMap {
+
+int PS4_SYSV_ABI sceDiscMapGetPackageSize();
+int PS4_SYSV_ABI sceDiscMapIsRequestOnHDD();
+int PS4_SYSV_ABI Func_7C980FFB0AA27E7A();
+int PS4_SYSV_ABI Func_8A828CAEE7EDD5E9();
+int PS4_SYSV_ABI Func_E7EBCE96E92F91F8();
+
+void RegisterlibSceDiscMap(Core::Loader::SymbolsResolver* sym);
+} // namespace Libraries::DiscMap
\ No newline at end of file
diff --git a/src/core/libraries/disc_map/disc_map_codes.h b/src/core/libraries/disc_map/disc_map_codes.h
new file mode 100644
index 00000000..841f0a9a
--- /dev/null
+++ b/src/core/libraries/disc_map/disc_map_codes.h
@@ -0,0 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+constexpr int ORBIS_DISC_MAP_ERROR_INVALID_ARGUMENT = 0x81100001;
+constexpr int ORBIS_DISC_MAP_ERROR_LOCATION_NOT_MAPPED = 0x81100002;
+constexpr int ORBIS_DISC_MAP_ERROR_FILE_NOT_FOUND = 0x81100003;
+constexpr int ORBIS_DISC_MAP_ERROR_NO_BITMAP_INFO = 0x81100004;
+constexpr int ORBIS_DISC_MAP_ERROR_FATAL = 0x811000FF;
diff --git a/src/core/libraries/libs.cpp b/src/core/libraries/libs.cpp
index 4675fd60..97de991a 100644
--- a/src/core/libraries/libs.cpp
+++ b/src/core/libraries/libs.cpp
@@ -5,6 +5,7 @@
 #include "core/libraries/app_content/app_content.h"
 #include "core/libraries/audio/audioin.h"
 #include "core/libraries/audio/audioout.h"
+#include "core/libraries/disc_map/disc_map.h"
 #include "core/libraries/gnmdriver/gnmdriver.h"
 #include "core/libraries/kernel/libkernel.h"
 #include "core/libraries/libc/libc.h"
@@ -18,6 +19,7 @@
 #include "core/libraries/np_score/np_score.h"
 #include "core/libraries/np_trophy/np_trophy.h"
 #include "core/libraries/pad/pad.h"
+#include "core/libraries/rtc/rtc.h"
 #include "core/libraries/save_data/savedata.h"
 #include "core/libraries/screenshot/screenshot.h"
 #include "core/libraries/system/commondialog.h"
@@ -61,6 +63,8 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) {
     Libraries::ScreenShot::RegisterlibSceScreenShot(sym);
     Libraries::LibcInternal::RegisterlibSceLibcInternal(sym);
     Libraries::AppContent::RegisterlibSceAppContent(sym);
+    Libraries::Rtc::RegisterlibSceRtc(sym);
+    Libraries::DiscMap::RegisterlibSceDiscMap(sym);
 }
 
 } // namespace Libraries
diff --git a/src/core/libraries/rtc/rtc.cpp b/src/core/libraries/rtc/rtc.cpp
new file mode 100644
index 00000000..6bf6a91b
--- /dev/null
+++ b/src/core/libraries/rtc/rtc.cpp
@@ -0,0 +1,303 @@
+// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+// Generated By moduleGenerator
+#include <chrono>
+#include "common/logging/log.h"
+#include "core/libraries/error_codes.h"
+#include "core/libraries/libs.h"
+#include "rtc.h"
+
+namespace Libraries::Rtc {
+
+int PS4_SYSV_ABI sceRtcCheckValid() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcCompareTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcConvertLocalTimeToUtc() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcConvertUtcToLocalTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcEnd() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcFormatRFC2822() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcFormatRFC2822LocalTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcFormatRFC3339() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcFormatRFC3339LocalTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcFormatRFC3339Precise() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcFormatRFC3339PreciseLocalTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetCurrentAdNetworkTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetCurrentClock() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetCurrentClockLocalTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetCurrentDebugNetworkTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetCurrentNetworkTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetCurrentRawNetworkTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetCurrentTick(OrbisRtcTick* pTick) {
+    pTick->tick = std::chrono::duration_cast<std::chrono::nanoseconds>(
+                      std::chrono::high_resolution_clock::now().time_since_epoch())
+                      .count();
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetDayOfWeek() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetDaysInMonth() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetDosTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetTickResolution() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetTime_t() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcGetWin32FileTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcInit() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcIsLeapYear() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcParseDateTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcParseRFC3339() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetConf() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetCurrentAdNetworkTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetCurrentDebugNetworkTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetCurrentNetworkTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetCurrentTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetDosTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetTick() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetTime_t() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcSetWin32FileTime() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddDays() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddHours() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddMicroseconds() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddMinutes() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddMonths() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddSeconds() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddTicks() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddWeeks() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+int PS4_SYSV_ABI sceRtcTickAddYears() {
+    LOG_ERROR(Lib_Rtc, "(STUBBED) called");
+    return ORBIS_OK;
+}
+
+void RegisterlibSceRtc(Core::Loader::SymbolsResolver* sym) {
+    LIB_FUNCTION("lPEBYdVX0XQ", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcCheckValid);
+    LIB_FUNCTION("fNaZ4DbzHAE", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcCompareTick);
+    LIB_FUNCTION("8Yr143yEnRo", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcConvertLocalTimeToUtc);
+    LIB_FUNCTION("M1TvFst-jrM", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcConvertUtcToLocalTime);
+    LIB_FUNCTION("8SljQx6pDP8", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcEnd);
+    LIB_FUNCTION("eiuobaF-hK4", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcFormatRFC2822);
+    LIB_FUNCTION("AxHBk3eat04", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcFormatRFC2822LocalTime);
+    LIB_FUNCTION("WJ3rqFwymew", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcFormatRFC3339);
+    LIB_FUNCTION("DwuHIlLGW8I", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcFormatRFC3339LocalTime);
+    LIB_FUNCTION("lja0nNPWojg", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcFormatRFC3339Precise);
+    LIB_FUNCTION("tOZ6fwwHZOA", "libSceRtc", 1, "libSceRtc", 1, 1,
+                 sceRtcFormatRFC3339PreciseLocalTime);
+    LIB_FUNCTION("LN3Zcb72Q0c", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetCurrentAdNetworkTick);
+    LIB_FUNCTION("8lfvnRMqwEM", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetCurrentClock);
+    LIB_FUNCTION("ZPD1YOKI+Kw", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetCurrentClockLocalTime);
+    LIB_FUNCTION("Ot1DE3gif84", "libSceRtc", 1, "libSceRtc", 1, 1,
+                 sceRtcGetCurrentDebugNetworkTick);
+    LIB_FUNCTION("zO9UL3qIINQ", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetCurrentNetworkTick);
+    LIB_FUNCTION("HWxHOdbM-Pg", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetCurrentRawNetworkTick);
+    LIB_FUNCTION("18B2NS1y9UU", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetCurrentTick);
+    LIB_FUNCTION("CyIK-i4XdgQ", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetDayOfWeek);
+    LIB_FUNCTION("3O7Ln8AqJ1o", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetDaysInMonth);
+    LIB_FUNCTION("E7AR4o7Ny7E", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetDosTime);
+    LIB_FUNCTION("8w-H19ip48I", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetTick);
+    LIB_FUNCTION("jMNwqYr4R-k", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetTickResolution);
+    LIB_FUNCTION("BtqmpTRXHgk", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetTime_t);
+    LIB_FUNCTION("jfRO0uTjtzA", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcGetWin32FileTime);
+    LIB_FUNCTION("LlodCMDbk3o", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcInit);
+    LIB_FUNCTION("Ug8pCwQvh0c", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcIsLeapYear);
+    LIB_FUNCTION("NxEI1KByvCI", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcParseDateTime);
+    LIB_FUNCTION("99bMGglFW3I", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcParseRFC3339);
+    LIB_FUNCTION("fFLgmNUpChg", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcSetConf);
+    LIB_FUNCTION("sV2tK+yOhBU", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcSetCurrentAdNetworkTick);
+    LIB_FUNCTION("VLDUPKmw5L8", "libSceRtc", 1, "libSceRtc", 1, 1,
+                 sceRtcSetCurrentDebugNetworkTick);
+    LIB_FUNCTION("qhDBtIo+auw", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcSetCurrentNetworkTick);
+    LIB_FUNCTION("d4fHLCGmY80", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcSetCurrentTick);
+    LIB_FUNCTION("aYPCd1cChyg", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcSetDosTime);
+    LIB_FUNCTION("ueega6v3GUw", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcSetTick);
+    LIB_FUNCTION("bDEVVP4bTjQ", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcSetTime_t);
+    LIB_FUNCTION("n5JiAJXsbcs", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcSetWin32FileTime);
+    LIB_FUNCTION("NR1J0N7L2xY", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddDays);
+    LIB_FUNCTION("MDc5cd8HfCA", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddHours);
+    LIB_FUNCTION("XPIiw58C+GM", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddMicroseconds);
+    LIB_FUNCTION("mn-tf4QiFzk", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddMinutes);
+    LIB_FUNCTION("CL6y9q-XbuQ", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddMonths);
+    LIB_FUNCTION("07O525HgICs", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddSeconds);
+    LIB_FUNCTION("AqVMssr52Rc", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddTicks);
+    LIB_FUNCTION("gI4t194c2W8", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddWeeks);
+    LIB_FUNCTION("-5y2uJ62qS8", "libSceRtc", 1, "libSceRtc", 1, 1, sceRtcTickAddYears);
+};
+
+} // namespace Libraries::Rtc
\ No newline at end of file
diff --git a/src/core/libraries/rtc/rtc.h b/src/core/libraries/rtc/rtc.h
new file mode 100644
index 00000000..ee6afa70
--- /dev/null
+++ b/src/core/libraries/rtc/rtc.h
@@ -0,0 +1,67 @@
+// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "common/types.h"
+
+namespace Core::Loader {
+class SymbolsResolver;
+}
+
+namespace Libraries::Rtc {
+
+struct OrbisRtcTick {
+    u64 tick;
+};
+
+int PS4_SYSV_ABI sceRtcCheckValid();
+int PS4_SYSV_ABI sceRtcCompareTick();
+int PS4_SYSV_ABI sceRtcConvertLocalTimeToUtc();
+int PS4_SYSV_ABI sceRtcConvertUtcToLocalTime();
+int PS4_SYSV_ABI sceRtcEnd();
+int PS4_SYSV_ABI sceRtcFormatRFC2822();
+int PS4_SYSV_ABI sceRtcFormatRFC2822LocalTime();
+int PS4_SYSV_ABI sceRtcFormatRFC3339();
+int PS4_SYSV_ABI sceRtcFormatRFC3339LocalTime();
+int PS4_SYSV_ABI sceRtcFormatRFC3339Precise();
+int PS4_SYSV_ABI sceRtcFormatRFC3339PreciseLocalTime();
+int PS4_SYSV_ABI sceRtcGetCurrentAdNetworkTick();
+int PS4_SYSV_ABI sceRtcGetCurrentClock();
+int PS4_SYSV_ABI sceRtcGetCurrentClockLocalTime();
+int PS4_SYSV_ABI sceRtcGetCurrentDebugNetworkTick();
+int PS4_SYSV_ABI sceRtcGetCurrentNetworkTick();
+int PS4_SYSV_ABI sceRtcGetCurrentRawNetworkTick();
+int PS4_SYSV_ABI sceRtcGetCurrentTick(OrbisRtcTick* pTick);
+int PS4_SYSV_ABI sceRtcGetDayOfWeek();
+int PS4_SYSV_ABI sceRtcGetDaysInMonth();
+int PS4_SYSV_ABI sceRtcGetDosTime();
+int PS4_SYSV_ABI sceRtcGetTick();
+int PS4_SYSV_ABI sceRtcGetTickResolution();
+int PS4_SYSV_ABI sceRtcGetTime_t();
+int PS4_SYSV_ABI sceRtcGetWin32FileTime();
+int PS4_SYSV_ABI sceRtcInit();
+int PS4_SYSV_ABI sceRtcIsLeapYear();
+int PS4_SYSV_ABI sceRtcParseDateTime();
+int PS4_SYSV_ABI sceRtcParseRFC3339();
+int PS4_SYSV_ABI sceRtcSetConf();
+int PS4_SYSV_ABI sceRtcSetCurrentAdNetworkTick();
+int PS4_SYSV_ABI sceRtcSetCurrentDebugNetworkTick();
+int PS4_SYSV_ABI sceRtcSetCurrentNetworkTick();
+int PS4_SYSV_ABI sceRtcSetCurrentTick();
+int PS4_SYSV_ABI sceRtcSetDosTime();
+int PS4_SYSV_ABI sceRtcSetTick();
+int PS4_SYSV_ABI sceRtcSetTime_t();
+int PS4_SYSV_ABI sceRtcSetWin32FileTime();
+int PS4_SYSV_ABI sceRtcTickAddDays();
+int PS4_SYSV_ABI sceRtcTickAddHours();
+int PS4_SYSV_ABI sceRtcTickAddMicroseconds();
+int PS4_SYSV_ABI sceRtcTickAddMinutes();
+int PS4_SYSV_ABI sceRtcTickAddMonths();
+int PS4_SYSV_ABI sceRtcTickAddSeconds();
+int PS4_SYSV_ABI sceRtcTickAddTicks();
+int PS4_SYSV_ABI sceRtcTickAddWeeks();
+int PS4_SYSV_ABI sceRtcTickAddYears();
+
+void RegisterlibSceRtc(Core::Loader::SymbolsResolver* sym);
+} // namespace Libraries::Rtc
\ No newline at end of file