release 0.1.0

This commit is contained in:
InoriRus
2022-05-21 22:04:50 +10:00
parent bc02c0560e
commit a37a9ca253
1056 changed files with 222884 additions and 41332 deletions
@@ -0,0 +1,79 @@
#include "Kyty/Core/Common.h"
#include "Kyty/Core/DbgAssert.h"
#include "Kyty/Core/String.h"
#include "Emulator/Common.h"
#include "Emulator/Libs/Errno.h"
#include "Emulator/Libs/Libs.h"
#include "Emulator/SymbolDatabase.h"
#ifdef KYTY_EMU_ENABLED
namespace Kyty::Libs {
LIB_VERSION("AppContent", 1, "AppContentUtil", 1, 1);
namespace AppContent {
struct AppContentInitParam
{
char reserved[32];
};
struct AppContentBootParam
{
char reserved1[4];
uint32_t attr;
char reserved2[32];
};
struct NpUnifiedEntitlementLabel
{
char data[17];
char padding[3];
};
struct AppContentAddcontInfo
{
NpUnifiedEntitlementLabel entitlement_label;
uint32_t status;
};
int KYTY_SYSV_ABI AppContentInitialize(const AppContentInitParam* init_param, AppContentBootParam* boot_param)
{
PRINT_NAME();
EXIT_NOT_IMPLEMENTED(init_param == nullptr);
EXIT_NOT_IMPLEMENTED(boot_param == nullptr);
boot_param->attr = 0;
return OK;
}
int KYTY_SYSV_ABI AppContentGetAddcontInfoList(uint32_t service_label, AppContentAddcontInfo* /*list*/, uint32_t list_num,
uint32_t* hit_num)
{
PRINT_NAME();
EXIT_NOT_IMPLEMENTED(hit_num == nullptr);
printf("\t service_label = %u\n", service_label);
printf("\t list_num = %u\n", list_num);
*hit_num = 0;
return OK;
}
} // namespace AppContent
LIB_DEFINE(InitAppContent_1)
{
LIB_FUNC("R9lA82OraNs", AppContent::AppContentInitialize);
LIB_FUNC("xnd8BJzAxmk", AppContent::AppContentGetAddcontInfoList);
}
} // namespace Kyty::Libs
#endif // KYTY_EMU_ENABLED
+23
View File
@@ -19,6 +19,8 @@ LIB_DEFINE(InitAudio_1_AudioOut)
LIB_FUNC("ekNvsT22rsY", AudioOut::AudioOutOpen);
LIB_FUNC("b+uAV89IlxE", AudioOut::AudioOutSetVolume);
LIB_FUNC("w3PdaSTSwGE", AudioOut::AudioOutOutputs);
LIB_FUNC("QOQtbeDqsT4", AudioOut::AudioOutOutput);
LIB_FUNC("s1--uE9mBFw", AudioOut::AudioOutClose);
}
} // namespace LibAudioOut
@@ -59,16 +61,37 @@ namespace Ajm = Audio::Ajm;
LIB_DEFINE(InitAudio_1_Ajm)
{
LIB_FUNC("dl+4eHSzUu4", Ajm::AjmInitialize);
LIB_FUNC("Q3dyFuwGn64", Ajm::AjmModuleRegister);
}
} // namespace LibAjm
namespace LibAvPlayer {
LIB_VERSION("AvPlayer", 1, "AvPlayer", 1, 0);
namespace AvPlayer = Audio::AvPlayer;
LIB_DEFINE(InitAudio_1_AvPlayer)
{
LIB_FUNC("aS66RI0gGgo", AvPlayer::AvPlayerInit);
LIB_FUNC("KMcEa+rHsIo", AvPlayer::AvPlayerAddSource);
LIB_FUNC("OVths0xGfho", AvPlayer::AvPlayerSetLooping);
LIB_FUNC("JdksQu8pNdQ", AvPlayer::AvPlayerGetVideoDataEx);
LIB_FUNC("Wnp1OVcrZgk", AvPlayer::AvPlayerGetAudioData);
LIB_FUNC("UbQoYawOsfY", AvPlayer::AvPlayerIsActive);
LIB_FUNC("NkJwDzKmIlw", AvPlayer::AvPlayerClose);
}
} // namespace LibAvPlayer
LIB_DEFINE(InitAudio_1)
{
LibAudioOut::InitAudio_1_AudioOut(s);
LibAudioIn::InitAudio_1_AudioIn(s);
LibVoiceQoS::InitAudio_1_VoiceQoS(s);
LibAjm::InitAudio_1_Ajm(s);
LibAvPlayer::InitAudio_1_AvPlayer(s);
}
} // namespace Kyty::Libs
+2 -1
View File
@@ -224,7 +224,7 @@ static void* KYTY_SYSV_ABI KernelGetProcParam()
{
PRINT_NAME();
auto* rt = Core::Singleton<Loader::RuntimeLinker>::Instance();
auto* rt = Core::Singleton<Loader::RuntimeLinker>::Instance(); // NOLINT
return reinterpret_cast<void*>(rt->GetProcParam());
}
@@ -461,6 +461,7 @@ LIB_DEFINE(InitLibKernel_1_Posix)
LIB_FUNC("mqULNdimTn0", Posix::pthread_key_create);
LIB_FUNC("6BpEZuDT7YI", Posix::pthread_key_delete);
LIB_FUNC("WrOLvHU0yQM", Posix::pthread_setspecific);
LIB_FUNC("0-KXaS70xy4", Posix::pthread_getspecific);
}
} // namespace Posix
+1
View File
@@ -183,6 +183,7 @@ LIB_DEFINE(InitNet_1_NpTrophy)
LIB_FUNC("XbkjbobZlCY", NpTrophy::NpTrophyCreateContext);
LIB_FUNC("TJCAxto9SEU", NpTrophy::NpTrophyRegisterContext);
LIB_FUNC("GNcF4oidY0Y", NpTrophy::NpTrophyDestroyHandle);
LIB_FUNC("LHuSmO3SLd8", NpTrophy::NpTrophyGetTrophyUnlockState);
}
} // namespace LibNpTrophy
+2
View File
@@ -20,6 +20,8 @@ LIB_DEFINE(InitPad_1)
LIB_FUNC("YndgXqQVV7c", Controller::PadReadState);
LIB_FUNC("q1cHNfGycLI", Controller::PadRead);
LIB_FUNC("yFVnOdGxvZY", Controller::PadSetVibration);
LIB_FUNC("DscD1i9HX1w", Controller::PadResetLightBar);
LIB_FUNC("RR4novUEENY", Controller::PadSetLightBar);
}
} // namespace Kyty::Libs
+119 -1
View File
@@ -31,6 +31,18 @@ struct SaveDataMountPoint
char data[16];
};
struct SaveDataMount
{
int user_id;
int pad;
const char* title_id;
const char* dir_name;
const char* fingerprint;
uint64_t blocks;
uint32_t mount_mode;
uint8_t reserved[32];
};
struct SaveDataMount2
{
int user_id;
@@ -63,6 +75,21 @@ struct SaveDataParam
uint8_t reserved[32];
};
struct SaveDataMountInfo
{
uint64_t blocks;
uint64_t free_blocks;
uint8_t reserved[32];
};
struct SaveDataIcon
{
void* buf;
size_t buf_size;
size_t data_size;
uint8_t reserved[32];
};
int KYTY_SYSV_ABI SaveDataInitialize(const void* /*init*/)
{
PRINT_NAME();
@@ -90,6 +117,69 @@ int KYTY_SYSV_ABI SaveDataInitialize3(const void* /*init*/)
return OK;
}
int KYTY_SYSV_ABI SaveDataMount(const SaveDataMount* 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 title_id = %s\n", mount->title_id);
printf("\t dir_name = %s\n", mount->dir_name);
printf("\t fingerprint = %s\n", mount->fingerprint);
printf("\t blocks = %" PRIu64 "\n", mount->blocks);
printf("\t mount_mode = %" PRIu32 "\n", mount->mount_mode);
String mount_dir = String(SAVE_DATA_DIR) + U"/" + String::FromUtf8(mount->dir_name);
String mount_point = SAVE_DATA_POINT;
bool create = (mount->mount_mode == 6 || mount->mount_mode == 22);
bool open = (mount->mount_mode == 1 || mount->mount_mode == 2);
if (!create && !open)
{
EXIT("unknown mount mode: %u", mount->mount_mode);
}
if (open)
{
EXIT_NOT_IMPLEMENTED(create);
if (!Core::File::IsDirectoryExisting(mount_dir))
{
return SAVE_DATA_ERROR_NOT_FOUND;
}
LibKernel::FileSystem::Mount(mount_dir, mount_point);
mount_result->mount_status = 0;
}
if (create)
{
EXIT_NOT_IMPLEMENTED(open);
if (Core::File::IsDirectoryExisting(mount_dir))
{
return SAVE_DATA_ERROR_EXISTS;
}
Core::File::CreateDirectories(mount_dir);
EXIT_NOT_IMPLEMENTED((!Core::File::IsDirectoryExisting(mount_dir)));
LibKernel::FileSystem::Mount(mount_dir, mount_point);
mount_result->mount_status = 1;
}
snprintf(mount_result->mount_point.data, 16, "%s", mount_point.C_Str());
mount_result->required_blocks = 0;
return OK;
}
int KYTY_SYSV_ABI SaveDataMount2(const SaveDataMount2* mount, SaveDataMountResult* mount_result)
{
PRINT_NAME();
@@ -104,7 +194,7 @@ int KYTY_SYSV_ABI SaveDataMount2(const SaveDataMount2* mount, SaveDataMountResul
String mount_dir = String(SAVE_DATA_DIR) + U"/" + String::FromUtf8(mount->dir_name->data);
String mount_point = SAVE_DATA_POINT;
bool create = (mount->mount_mode == 22);
bool create = (mount->mount_mode == 6 || mount->mount_mode == 22);
bool open = (mount->mount_mode == 1 || mount->mount_mode == 2);
if (!create && !open)
@@ -190,6 +280,31 @@ int KYTY_SYSV_ABI SaveDataSetParam(const SaveDataMountPoint* mount_point, uint32
return OK;
}
int KYTY_SYSV_ABI SaveDataGetMountInfo(const SaveDataMountPoint* mount_point, SaveDataMountInfo* info)
{
PRINT_NAME();
EXIT_NOT_IMPLEMENTED(mount_point == nullptr);
EXIT_NOT_IMPLEMENTED(info == nullptr);
info->blocks = 100000;
info->free_blocks = 100000;
return OK;
}
int KYTY_SYSV_ABI SaveDataSaveIcon(const SaveDataMountPoint* mount_point, const SaveDataIcon* icon)
{
EXIT_NOT_IMPLEMENTED(mount_point == nullptr);
EXIT_NOT_IMPLEMENTED(icon == nullptr);
printf("\t buf = %016" PRIx64 "\n", reinterpret_cast<uint64_t>(icon->buf));
printf("\t buf_size = %" PRIu64 "\n", icon->buf_size);
printf("\t data_size = %" PRIu64 "\n", icon->data_size);
return OK;
}
} // namespace SaveData
LIB_DEFINE(InitSaveData_1)
@@ -197,9 +312,12 @@ LIB_DEFINE(InitSaveData_1)
LIB_FUNC("ZkZhskCPXFw", SaveData::SaveDataInitialize);
LIB_FUNC("l1NmDeDpNGU", SaveData::SaveDataInitialize2);
LIB_FUNC("TywrFKCoLGY", SaveData::SaveDataInitialize3);
LIB_FUNC("32HQAQdwM2o", SaveData::SaveDataMount);
LIB_FUNC("0z45PIH+SNI", SaveData::SaveDataMount2);
LIB_FUNC("BMR4F-Uek3E", SaveData::SaveDataUmount);
LIB_FUNC("85zul--eGXs", SaveData::SaveDataSetParam);
LIB_FUNC("65VH0Qaaz6s", SaveData::SaveDataGetMountInfo);
LIB_FUNC("c88Yy54Mx0w", SaveData::SaveDataSaveIcon);
}
} // namespace Kyty::Libs
@@ -116,7 +116,7 @@ static int KYTY_SYSV_ABI SystemServiceParamGetInt(int param_id, int* value)
switch (param_id)
{
case PARAM_ID_LANG: v = PARAM_LANG_RUSSIAN; break;
case PARAM_ID_LANG: v = PARAM_LANG_ENGLISH_US; break;
case PARAM_ID_DATE_FORMAT: v = PARAM_DATE_FORMAT_DDMMYYYY; break;
case PARAM_ID_TIME_FORMAT: v = PARAM_TIME_FORMAT_24HOUR; break;
case PARAM_ID_TIME_ZONE: v = +180; break;
+23 -1
View File
@@ -21,6 +21,18 @@ struct UserServiceLoginUserIdList
int user_id[4];
};
enum UserServiceEventType
{
UserServiceEventTypeLogin,
UserServiceEventTypeLogout
};
struct SceUserServiceEvent
{
UserServiceEventType event_type;
int user_id;
};
static KYTY_SYSV_ABI int UserServiceInitialize(const void* /*params*/)
{
PRINT_NAME();
@@ -39,12 +51,22 @@ static KYTY_SYSV_ABI int UserServiceGetInitialUser(int* user_id)
return OK;
}
static KYTY_SYSV_ABI int UserServiceGetEvent(void* event)
static KYTY_SYSV_ABI int UserServiceGetEvent(SceUserServiceEvent* event)
{
PRINT_NAME();
EXIT_NOT_IMPLEMENTED(event == nullptr);
static bool logged_in = false;
if (!logged_in)
{
logged_in = true;
event->event_type = UserServiceEventTypeLogin;
event->user_id = 1;
return OK;
}
return USER_SERVICE_ERROR_NO_EVENT;
}
+2 -2
View File
@@ -8,12 +8,12 @@ namespace LibcInternal {
LIB_DEFINE(InitLibcInternal_1);
} // namespace LibcInternal
LIB_DEFINE(InitAppContent_1);
LIB_DEFINE(InitAudio_1);
LIB_DEFINE(InitDebug_1);
LIB_DEFINE(InitDialog_1);
LIB_DEFINE(InitDiscMap_1);
LIB_DEFINE(InitGraphicsDriver_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"libAppContent_1", InitAppContent_1);
LIB_CHECK(U"libc_internal_1", LibcInternal::InitLibcInternal_1);
LIB_CHECK(U"libDebug_1", InitDebug_1);
LIB_CHECK(U"libDialog_1", InitDialog_1);