more APIs

This commit is contained in:
InoriRus
2022-04-13 20:36:34 +10:00
parent 1d43b81773
commit 08b0a87225
134 changed files with 49099 additions and 96 deletions
+17
View File
@@ -7,6 +7,22 @@
namespace Kyty::Libs {
namespace LibAudioOut {
LIB_VERSION("AudioOut", 1, "AudioOut", 1, 1);
namespace AudioOut = Audio::AudioOut;
LIB_DEFINE(InitAudio_1_AudioOut)
{
LIB_FUNC("JfEPXVxhFqA", AudioOut::AudioOutInit);
LIB_FUNC("ekNvsT22rsY", AudioOut::AudioOutOpen);
LIB_FUNC("b+uAV89IlxE", AudioOut::AudioOutSetVolume);
LIB_FUNC("w3PdaSTSwGE", AudioOut::AudioOutOutputs);
}
} // namespace LibAudioOut
namespace LibVoiceQoS {
LIB_VERSION("VoiceQoS", 1, "VoiceQoS", 0, 0);
@@ -22,6 +38,7 @@ LIB_DEFINE(InitAudio_1_VoiceQoS)
LIB_DEFINE(InitAudio_1)
{
LibAudioOut::InitAudio_1_AudioOut(s);
LibVoiceQoS::InitAudio_1_VoiceQoS(s);
}
+66 -7
View File
@@ -1,6 +1,7 @@
#include "Kyty/Core/Common.h"
#include "Kyty/Core/DbgAssert.h"
#include "Kyty/Core/LinkList.h"
#include "Kyty/Core/MSpace.h"
#include "Kyty/Core/Singleton.h"
#include "Kyty/Core/String.h"
@@ -59,21 +60,20 @@ static KYTY_SYSV_ABI int atexit(void (*func)())
return 0;
}
static KYTY_SYSV_ABI int printf(VA_ARGS)
static KYTY_SYSV_ABI int libc_printf(VA_ARGS)
{
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
VA_CONTEXT(ctx);
VA_CONTEXT(ctx); // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
PRINT_NAME();
return GetPrintFuncV()(&ctx);
return GetPrintfCtxFunc()(&ctx);
}
static KYTY_SYSV_ABI int puts(const char* s)
{
PRINT_NAME();
return GetPrintFunc()("%s\n", s);
return GetPrintfStdFunc()("%s\n", s);
}
static KYTY_SYSV_ABI void catchReturnFromMain(int status)
@@ -161,7 +161,16 @@ int KYTY_SYSV_ABI vprintf(const char* str, VaList* c)
{
PRINT_NAME();
return GetVPrintFunc()(str, c);
return GetVprintfFunc()(str, c);
}
static KYTY_SYSV_ABI int snprintf(VA_ARGS)
{
VA_CONTEXT(ctx); // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
PRINT_NAME();
return GetSnrintfCtxFunc()(&ctx);
}
int KYTY_SYSV_ABI fflush(FILE* stream)
@@ -180,6 +189,49 @@ void* KYTY_SYSV_ABI memset(void* s, int c, size_t n)
return ::memset(s, c, n);
}
void* KYTY_SYSV_ABI LibcMspaceCreate(const char* name, void* base, size_t capacity, uint32_t flag)
{
PRINT_NAME();
printf("\t name = %s\n", name);
printf("\t base = %016" PRIx64 "\n", reinterpret_cast<uint64_t>(base));
printf("\t capacity = %016" PRIx64 "\n", capacity);
printf("\t flag = %u\n", flag);
EXIT_NOT_IMPLEMENTED(flag != 0 && flag != 1);
EXIT_NOT_IMPLEMENTED(name == nullptr);
EXIT_NOT_IMPLEMENTED(base == nullptr);
EXIT_NOT_IMPLEMENTED(capacity == 0);
bool thread_safe = true;
if (flag == 1)
{
thread_safe = false;
}
auto* msp = Core::MSpaceCreate(name, base, capacity, thread_safe, nullptr);
EXIT_NOT_IMPLEMENTED(msp == nullptr);
return msp;
}
void* KYTY_SYSV_ABI LibcMspaceMalloc(void* msp, size_t size)
{
PRINT_NAME();
printf("\t size = %016" PRIx64 "\n", size);
auto* buf = Core::MSpaceMalloc(msp, size);
printf("\t buf = %016" PRIx64 "\n", reinterpret_cast<uint64_t>(buf));
EXIT_NOT_IMPLEMENTED(buf == nullptr);
return buf;
}
LIB_DEFINE(InitLibcInternal_1)
{
LibcInternalExt::InitLibcInternalExt_1(s);
@@ -190,8 +242,13 @@ LIB_DEFINE(InitLibcInternal_1)
LIB_FUNC("GMpvxPFW924", LibcInternal::vprintf);
LIB_FUNC("MUjC4lbHrK4", LibcInternal::fflush);
LIB_FUNC("8zTFvBIAIN8", LibcInternal::memset);
LIB_FUNC("eLdDw6l0-bU", LibcInternal::snprintf);
LIB_FUNC("tsvEmnenz48", LibC::cxa_atexit);
LIB_FUNC("H2e8t5ScQGc", LibC::cxa_finalize);
LIB_FUNC("-hn1tcVHq5Q", LibcInternal::LibcMspaceCreate);
LIB_FUNC("OJjm-QOIHlI", LibcInternal::LibcMspaceMalloc);
}
} // namespace LibcInternal
@@ -200,6 +257,8 @@ LIB_USING(LibC);
LIB_DEFINE(InitLibC_1)
{
EXIT("deprecated\n");
LibcInternal::InitLibcInternal_1(s);
LIB_OBJECT("P330P3dFF68", &LibC::g_need_flag);
@@ -207,7 +266,7 @@ LIB_DEFINE(InitLibC_1)
LIB_FUNC("uMei1W9uyNo", LibC::exit);
LIB_FUNC("bzQExy189ZI", LibC::init_env);
LIB_FUNC("8G2LB+A3rzg", LibC::atexit);
LIB_FUNC("hcuQgD53UxM", LibC::printf);
LIB_FUNC("hcuQgD53UxM", LibC::libc_printf);
LIB_FUNC("YQ0navp+YIc", LibC::puts);
LIB_FUNC("XKRegsFpEpk", LibC::catchReturnFromMain);
LIB_FUNC("tsvEmnenz48", LibC::cxa_atexit);
+17
View File
@@ -410,6 +410,13 @@ int KYTY_SYSV_ABI KernelIsNeoMode()
return (Config::IsNeo() ? 1 : 0);
}
int KYTY_SYSV_ABI clock_gettime(int clock_id, LibKernel::KernelTimespec* time)
{
PRINT_NAME();
return POSIX_CALL(LibKernel::KernelClockGettime(clock_id, time));
}
} // namespace LibKernel
namespace Posix {
@@ -423,9 +430,17 @@ int KYTY_SYSV_ABI clock_gettime(int clock_id, LibKernel::KernelTimespec* time)
return POSIX_CALL(LibKernel::KernelClockGettime(clock_id, time));
}
int KYTY_SYSV_ABI nanosleep(const LibKernel::KernelTimespec* rqtp, LibKernel::KernelTimespec* rmtp)
{
PRINT_NAME();
return POSIX_CALL(LibKernel::KernelNanosleep(rqtp, rmtp));
}
LIB_DEFINE(InitLibKernel_1_Posix)
{
LIB_FUNC("lLMT9vJAck0", clock_gettime);
LIB_FUNC("yS8U2TGCe1A", nanosleep);
LIB_FUNC("7H0iTOciTLo", Posix::pthread_mutex_lock);
LIB_FUNC("2Z+PpY6CaJg", Posix::pthread_mutex_unlock);
@@ -543,6 +558,7 @@ LIB_DEFINE(InitLibKernel_1_Pthread)
LIB_FUNC("WKAXJ4XBPQ4", LibKernel::PthreadCondWait);
LIB_FUNC("JGgj7Uvrl+A", LibKernel::PthreadCondBroadcast);
LIB_FUNC("BmMjYxmew1w", LibKernel::PthreadCondTimedwait);
LIB_FUNC("m5-2bsNfv7s", LibKernel::PthreadCondattrInit);
LIB_FUNC("QBi7HCK03hw", LibKernel::KernelClockGettime);
LIB_FUNC("ejekcaNQNq0", LibKernel::KernelGettimeofday);
@@ -588,6 +604,7 @@ LIB_DEFINE(InitLibKernel_1)
LIB_FUNC("WslcK1FQcGI", LibKernel::KernelIsNeoMode);
LIB_FUNC("9BcDykPmo1I", LibKernel::get_error_addr);
LIB_FUNC("6xVpy0Fdq+I", LibKernel::sigprocmask);
LIB_FUNC("lLMT9vJAck0", LibKernel::clock_gettime);
LIB_FUNC("1jfXLRVzisc", LibKernel::KernelUsleep);
LIB_FUNC("rNhWz+lvOMU", LibKernel::KernelSetThreadDtors);
+14
View File
@@ -137,6 +137,19 @@ LIB_DEFINE(InitNet_1_NpManager)
} // namespace LibNpManager
namespace LibNpManagerForToolkit {
LIB_VERSION("NpManagerForToolkit", 1, "NpManager", 1, 1);
namespace NpManagerForToolkit = Network::NpManagerForToolkit;
LIB_DEFINE(InitNet_1_NpManagerForToolkit)
{
LIB_FUNC("0c7HbXRKUt4", NpManagerForToolkit::NpRegisterStateCallbackForToolkit);
}
} // namespace LibNpManagerForToolkit
namespace LibNpTrophy {
LIB_VERSION("NpTrophy", 1, "NpTrophy", 1, 1);
@@ -170,6 +183,7 @@ LIB_DEFINE(InitNet_1)
LibHttp::InitNet_1_Http(s);
LibNetCtl::InitNet_1_NetCtl(s);
LibNpManager::InitNet_1_NpManager(s);
LibNpManagerForToolkit::InitNet_1_NpManagerForToolkit(s);
LibNpTrophy::InitNet_1_NpTrophy(s);
LibNpWebApi::InitNet_1_NpWebApi(s);
}
+62
View File
@@ -1,3 +1,5 @@
#include "Kyty/Core/Common.h"
#include "Kyty/Core/DbgAssert.h"
#include "Kyty/Core/String.h"
#include "Emulator/Common.h"
@@ -13,6 +15,37 @@ LIB_VERSION("SaveData", 1, "SaveData", 1, 1);
namespace SaveData {
struct SceSaveDataDirName
{
char data[32];
};
struct SaveDataMountPoint
{
char data[16];
};
struct SaveDataMount2
{
int user_id;
int pad;
const SceSaveDataDirName* dir_name;
uint64_t blocks;
uint32_t mount_mode;
uint8_t reserved[32];
int pad2;
};
struct SaveDataMountResult
{
SaveDataMountPoint mount_point;
uint64_t required_blocks;
uint32_t unused;
uint32_t mount_status;
uint8_t reserved[28];
int pad;
};
int KYTY_SYSV_ABI SaveDataInitialize(const void* /*init*/)
{
PRINT_NAME();
@@ -40,6 +73,34 @@ int KYTY_SYSV_ABI SaveDataInitialize3(const void* /*init*/)
return OK;
}
int KYTY_SYSV_ABI SaveDataMount2(const SaveDataMount2* mount, SaveDataMountResult* mount_result)
{
PRINT_NAME();
EXIT_NOT_IMPLEMENTED(mount == nullptr);
EXIT_NOT_IMPLEMENTED(mount_result == nullptr);
printf("\t user_id = %d\n", mount->user_id);
printf("\t dir_name = %s\n", mount->dir_name->data);
printf("\t blocks = %" PRIu64 "\n", mount->blocks);
printf("\t mount_mode = %" PRIu32 "\n", mount->mount_mode);
if (mount->mount_mode == 1)
{
return SAVE_DATA_ERROR_NOT_FOUND;
} else // NOLINT
{
EXIT("unknown mount mode: %u", mount->mount_mode);
}
strcpy(mount_result->mount_point.data, "/savedata0");
mount_result->required_blocks = 0;
mount_result->mount_status = 1;
return OK;
}
} // namespace SaveData
LIB_DEFINE(InitSaveData_1)
@@ -47,6 +108,7 @@ LIB_DEFINE(InitSaveData_1)
LIB_FUNC("ZkZhskCPXFw", SaveData::SaveDataInitialize);
LIB_FUNC("l1NmDeDpNGU", SaveData::SaveDataInitialize2);
LIB_FUNC("TywrFKCoLGY", SaveData::SaveDataInitialize3);
LIB_FUNC("0z45PIH+SNI", SaveData::SaveDataMount2);
}
} // namespace Kyty::Libs
+13 -3
View File
@@ -18,7 +18,7 @@ static KYTY_SYSV_ABI int SysmoduleLoadModule(uint16_t id)
{
PRINT_NAME();
printf("\tid = %d\n", static_cast<int>(id));
printf("\t id = %d\n", static_cast<int>(id));
return 0;
}
@@ -27,7 +27,7 @@ static KYTY_SYSV_ABI int SysmoduleUnloadModule(uint16_t id)
{
PRINT_NAME();
printf("\tid = %d\n", static_cast<int>(id));
printf("\t id = %d\n", static_cast<int>(id));
return 0;
}
@@ -36,7 +36,7 @@ static KYTY_SYSV_ABI int SysmoduleLoadModuleInternalWithArg(uint16_t id, int arg
{
PRINT_NAME();
printf("\tid = %d\n", static_cast<int>(id));
printf("\t id = %d\n", static_cast<int>(id));
EXIT_IF(arg1 != 0);
EXIT_IF(arg2 != 0);
@@ -48,6 +48,15 @@ static KYTY_SYSV_ABI int SysmoduleLoadModuleInternalWithArg(uint16_t id, int arg
return 0;
}
static KYTY_SYSV_ABI int SysmoduleIsLoaded(uint16_t id)
{
PRINT_NAME();
printf("\t id = %d\n", static_cast<int>(id));
return 0;
}
} // namespace Sysmodule
LIB_DEFINE(InitSysmodule_1)
@@ -55,6 +64,7 @@ LIB_DEFINE(InitSysmodule_1)
LIB_FUNC("eR2bZFAAU0Q", Sysmodule::SysmoduleUnloadModule);
LIB_FUNC("hHrGoGoNf+s", Sysmodule::SysmoduleLoadModuleInternalWithArg);
LIB_FUNC("g8cM39EUZ6o", Sysmodule::SysmoduleLoadModule);
LIB_FUNC("fMP5NHUOaMk", Sysmodule::SysmoduleIsLoaded);
}
} // namespace Kyty::Libs
@@ -14,6 +14,11 @@ LIB_VERSION("UserService", 1, "UserService", 1, 1);
namespace UserService {
struct UserServiceLoginUserIdList
{
int user_id[4];
};
static KYTY_SYSV_ABI int UserServiceInitialize(const void* /*params*/)
{
PRINT_NAME();
@@ -41,6 +46,20 @@ static KYTY_SYSV_ABI int UserServiceGetEvent(void* event)
return USER_SERVICE_ERROR_NO_EVENT;
}
static KYTY_SYSV_ABI int UserServiceGetLoginUserIdList(UserServiceLoginUserIdList* user_id_list)
{
PRINT_NAME();
EXIT_NOT_IMPLEMENTED(user_id_list == nullptr);
user_id_list->user_id[0] = 1;
user_id_list->user_id[1] = -1;
user_id_list->user_id[2] = -1;
user_id_list->user_id[3] = -1;
return OK;
}
} // namespace UserService
LIB_DEFINE(InitUserService_1)
@@ -48,6 +67,7 @@ LIB_DEFINE(InitUserService_1)
LIB_FUNC("j3YMu1MVNNo", UserService::UserServiceInitialize);
LIB_FUNC("CdWp0oHWGr0", UserService::UserServiceGetInitialUser);
LIB_FUNC("yH17Q6NWtVg", UserService::UserServiceGetEvent);
LIB_FUNC("fPhymKNvK-A", UserService::UserServiceGetLoginUserIdList);
}
} // namespace Kyty::Libs
+2 -2
View File
@@ -13,7 +13,7 @@ LIB_DEFINE(InitDebug_1);
LIB_DEFINE(InitDialog_1);
LIB_DEFINE(InitDiscMap_1);
LIB_DEFINE(InitGraphicsDriver_1);
LIB_DEFINE(InitLibC_1);
// LIB_DEFINE(InitLibC_1);
LIB_DEFINE(InitLibKernel_1);
LIB_DEFINE(InitNet_1);
LIB_DEFINE(InitPad_1);
@@ -27,7 +27,7 @@ LIB_DEFINE(InitVideoOut_1);
bool Init(const String& id, Loader::SymbolDatabase* s)
{
LIB_CHECK(U"libAudio_1", InitAudio_1);
LIB_CHECK(U"libc_1", InitLibC_1);
// LIB_CHECK(U"libc_1", InitLibC_1);
LIB_CHECK(U"libc_internal_1", LibcInternal::InitLibcInternal_1);
LIB_CHECK(U"libDebug_1", InitDebug_1);
LIB_CHECK(U"libDialog_1", InitDialog_1);
+38 -14
View File
@@ -506,7 +506,7 @@ static inline unsigned int _strnlen_s(const char* str, size_t maxsize)
}
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
int my_vprint(const char* format, VaList* va_list)
static int kyty_printf_internal(bool sn, char* sn_s, size_t sn_n, const char* format, VaList* va_list)
{
Vector<char> buffer;
@@ -854,40 +854,64 @@ int my_vprint(const char* format, VaList* va_list)
// termination
out(static_cast<char>(0), &buffer, idx < maxlen ? idx : maxlen - 1U, maxlen);
printf(FG_BRIGHT_MAGENTA "%s" DEFAULT, buffer.GetDataConst());
if (sn)
{
snprintf(sn_s, sn_n, "%s", buffer.GetDataConst());
} else
{
printf(FG_BRIGHT_MAGENTA "%s" DEFAULT, buffer.GetDataConst());
}
// return written chars without terminating \0
return static_cast<int>(idx);
}
int my_print_v(VaContext* ctx)
static int kyty_vprintf(const char* format, VaList* va_list)
{
return kyty_printf_internal(false, nullptr, 0, format, va_list);
}
static int kyty_printf_ctx(VaContext* ctx)
{
const char* format = VaArg_ptr<const char>(&ctx->va_list);
return my_vprint(format, &ctx->va_list);
return kyty_printf_internal(false, nullptr, 0, format, &ctx->va_list);
}
int KYTY_SYSV_ABI my_print2(VA_ARGS)
static int kyty_snprintf_ctx(VaContext* ctx)
{
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
VA_CONTEXT(ctx);
char* s = VaArg_ptr<char>(&ctx->va_list);
size_t n = VaArg_size_t(&ctx->va_list);
const char* format = VaArg_ptr<const char>(&ctx->va_list);
return my_print_v(&ctx);
return kyty_printf_internal(true, s, n, format, &ctx->va_list);
}
libc_print_func_t GetPrintFunc()
static int KYTY_SYSV_ABI kyty_printf_std(VA_ARGS)
{
return reinterpret_cast<libc_print_func_t>(my_print2);
VA_CONTEXT(ctx); // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
return kyty_printf_ctx(&ctx);
}
libc_print_v_func_t GetPrintFuncV()
libc_printf_std_func_t GetPrintfStdFunc()
{
return my_print_v;
return reinterpret_cast<libc_printf_std_func_t>(kyty_printf_std);
}
libc_vprint_func_t GetVPrintFunc()
libc_printf_ctx_func_t GetPrintfCtxFunc()
{
return my_vprint;
return kyty_printf_ctx;
}
libc_snprintf_ctx_func_t GetSnrintfCtxFunc()
{
return kyty_snprintf_ctx;
}
libc_vprintf_func_t GetVprintfFunc()
{
return kyty_vprintf;
}
} // namespace Kyty::Libs