mirror of
https://github.com/cemu-project/Cemu.git
synced 2026-05-12 15:59:38 -06:00
Move and tidy up nn::olv::PortalAppParam code needed for Miiverse applet.
This commit is contained in:
parent
a8508c7369
commit
1c24dd2a6f
@ -15,53 +15,6 @@ namespace nn
|
||||
{
|
||||
namespace olv
|
||||
{
|
||||
static const char* startUrlTemplate = "%s/titles/show?src=menu";
|
||||
struct PortalAppParam_t
|
||||
{
|
||||
/* +0x1A5C3C */ char paramPack[0x200];
|
||||
/* +0x1A663B */ char serviceToken[0x201];
|
||||
/* +0x1A5E3C */ char startUrl[0x7ff]; // https://portal-us.olv.nintendo.net/titles/show?src=menu
|
||||
};
|
||||
|
||||
uint32 StubPortalApp([[maybe_unused]] void* pPortalAppParam)
|
||||
{
|
||||
// Response to either a size or pointer.
|
||||
// In any case, it usually ignores 0 or null.
|
||||
return 0;
|
||||
}
|
||||
|
||||
void exportPortalAppParam_GetParamPack(PPCInterpreter_t* hCPU)
|
||||
{
|
||||
// r3 = PortalAppParam
|
||||
ppcDefineParamTypePtr(portalAppParam, PortalAppParam_t, 0);
|
||||
|
||||
strcpy(portalAppParam->paramPack, g_ParamPack.encodedParamPack);
|
||||
|
||||
osLib_returnFromFunction(hCPU, memory_getVirtualOffsetFromPointer(&portalAppParam->serviceToken));
|
||||
}
|
||||
|
||||
void exportPortalAppParam_GetServiceToken(PPCInterpreter_t* hCPU)
|
||||
{
|
||||
// r3 = PortalAppParam
|
||||
ppcDefineParamTypePtr(portalAppParam, PortalAppParam_t, 0);
|
||||
|
||||
strcpy(portalAppParam->serviceToken, g_DiscoveryResults.serviceToken);
|
||||
|
||||
osLib_returnFromFunction(hCPU, memory_getVirtualOffsetFromPointer(&portalAppParam->serviceToken));
|
||||
}
|
||||
|
||||
void exportPortalAppParam_GetStartUrl(PPCInterpreter_t* hCPU)
|
||||
{
|
||||
// r3 = PortalAppParam
|
||||
ppcDefineParamTypePtr(portalAppParam, PortalAppParam_t, 0);
|
||||
|
||||
cemu_assert_debug(g_DiscoveryResults.portalEndpoint[0]);
|
||||
snprintf(portalAppParam->startUrl, sizeof(portalAppParam->startUrl),
|
||||
startUrlTemplate, g_DiscoveryResults.portalEndpoint);
|
||||
|
||||
osLib_returnFromFunction(hCPU, memory_getVirtualOffsetFromPointer(&portalAppParam->startUrl));
|
||||
}
|
||||
|
||||
static SysAllocator<OSThread_t> s_OlvReleaseBgThread;
|
||||
SysAllocator<uint8, 1024> s_OlvReleaseBgThreadStack;
|
||||
SysAllocator<char, 32> s_OlvReleaseBgThreadName;
|
||||
@ -155,11 +108,6 @@ namespace nn
|
||||
loadOliveUploadFavoriteTypes();
|
||||
loadOlivePostAndTopicTypes();
|
||||
|
||||
// TODO: loadOlivePortalAppTypes
|
||||
osLib_addFunction("nn_olv", "GetParamPack__Q4_2nn3olv6hidden14PortalAppParamCFv", exportPortalAppParam_GetParamPack);
|
||||
osLib_addFunction("nn_olv", "GetServiceToken__Q4_2nn3olv6hidden14PortalAppParamCFv", exportPortalAppParam_GetServiceToken);
|
||||
osLib_addFunction("nn_olv", "GetStartUrl__Q4_2nn3olv6hidden14PortalAppParamCFv", exportPortalAppParam_GetStartUrl);
|
||||
|
||||
cafeExportRegisterFunc(GetErrorCode, "nn_olv", "GetErrorCode__Q2_2nn3olvFRCQ2_2nn6Result", LogType::NN_OLV);
|
||||
|
||||
cafeExportRegisterFunc(StubPostApp, "nn_olv", "UploadPostDataByPostApp__Q2_2nn3olvFPCQ3_2nn3olv28UploadPostDataByPostAppParam", LogType::NN_OLV);
|
||||
@ -171,14 +119,6 @@ namespace nn
|
||||
cafeExportRegisterFunc(StubPostAppResult, "nn_olv", "GetResultWithUploadedDirectMessageDataByPostApp__Q2_2nn3olvFPQ3_2nn3olv25UploadedDirectMessageData", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(StubPostAppResult, "nn_olv", "GetResultWithUploadedCommentDataByPostApp__Q2_2nn3olvFPQ3_2nn3olv19UploadedCommentData", LogType::NN_OLV);
|
||||
|
||||
cafeExportRegisterFunc(StubPortalApp, "nn_olv", "GetAppDataSize__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(StubPortalApp, "nn_olv", "GetAppData__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(StubPortalApp, "nn_olv", "GetDefaultBodyMemo__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(StubPortalApp, "nn_olv", "GetExternalBinaryDataSize__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(StubPortalApp, "nn_olv", "GetExternalBinaryData__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(StubPortalApp, "nn_olv", "GetExternalImageDataSize__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(StubPortalApp, "nn_olv", "GetExternalImageData__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
|
||||
cafeExportRegisterFunc(UploadedPostData_GetPostId, "nn_olv", "GetPostId__Q3_2nn3olv16UploadedPostDataCFv", LogType::NN_OLV);
|
||||
}
|
||||
|
||||
@ -188,4 +128,4 @@ namespace nn
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -279,8 +279,15 @@ namespace nn
|
||||
|
||||
sint32 InitializePortalApp(nn::olv::PortalAppParam* pPortalAppParam, nn::olv::InitializeParam* pInitializeParam)
|
||||
{
|
||||
// todo - stub
|
||||
Initialize(pInitializeParam);
|
||||
sint32 result = Initialize(pInitializeParam);
|
||||
if (result != OLV_RESULT_SUCCESS)
|
||||
return result;
|
||||
|
||||
memcpy(pPortalAppParam->m_ParamPack, g_ParamPack.encodedParamPack, sizeof(g_ParamPack.encodedParamPack));
|
||||
memcpy(pPortalAppParam->m_ServiceToken, g_DiscoveryResults.serviceToken, sizeof(g_DiscoveryResults.serviceToken));
|
||||
|
||||
snprintf(reinterpret_cast<char*>(pPortalAppParam->m_StartUrl), sizeof(pPortalAppParam->m_StartUrl),
|
||||
"%s/titles/show?src=menu", g_DiscoveryResults.portalEndpoint);
|
||||
|
||||
return OLV_RESULT_SUCCESS;
|
||||
}
|
||||
@ -303,4 +310,4 @@ namespace nn
|
||||
return g_IsInitialized;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -106,6 +106,9 @@ namespace nn
|
||||
public:
|
||||
PortalAppParam()
|
||||
{
|
||||
m_ParamPack[0] = 0;
|
||||
m_ServiceToken[0] = 0;
|
||||
m_StartUrl[0] = 0;
|
||||
}
|
||||
static PortalAppParam* __ctor(PortalAppParam* _this)
|
||||
{
|
||||
@ -117,39 +120,39 @@ namespace nn
|
||||
else
|
||||
return new (_this) PortalAppParam();
|
||||
}
|
||||
/*
|
||||
struct PortalAppParam {
|
||||
uint appDataSize; // for all sizes, if it is 0 then it returns null pointer
|
||||
char appData[1024];
|
||||
uint defaultBodyMemoSize;
|
||||
char defaultBodyMemo[153644];
|
||||
uint externalImageDataSize;
|
||||
char externalImageData[524288];
|
||||
uint externalBinaryDataSize;
|
||||
char externalBinaryData[1048576];
|
||||
char paramPack[512];
|
||||
char startUrl[2047];
|
||||
char serviceToken[513];
|
||||
uint startType;
|
||||
char bodyText[512]; // may actually be u16, as in, utf-16
|
||||
char topicTag[304];
|
||||
char searchKey[1520];
|
||||
char externalUrl[256];
|
||||
uint bodyTextMaxLength; // why is it back here
|
||||
char feeling; // it is just a char
|
||||
char padding_0[3];
|
||||
uint communityId;
|
||||
uint userPid;
|
||||
uint flags;
|
||||
char postId[32];
|
||||
int useWebHost; // unknown, only referenced when initializing?, when 0 portalHost is used otherwise webHost
|
||||
char webHost[2047]; // actually the api url
|
||||
char portalHost[2047]; // portal-us.olv.nintendo.net
|
||||
undefined padding_1[3434]; // unreferenced, alignment?
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
uint8be* GetParamPack()
|
||||
{
|
||||
return m_ParamPack;
|
||||
}
|
||||
static uint8be* __GetParamPack(PortalAppParam* _this)
|
||||
{
|
||||
return _this->GetParamPack();
|
||||
}
|
||||
|
||||
uint8be* GetServiceToken()
|
||||
{
|
||||
return m_ServiceToken;
|
||||
}
|
||||
static uint8be* __GetServiceToken(PortalAppParam* _this)
|
||||
{
|
||||
return _this->GetServiceToken();
|
||||
}
|
||||
|
||||
uint8be* GetStartUrl()
|
||||
{
|
||||
return m_StartUrl;
|
||||
}
|
||||
static uint8be* __GetStartUrl(PortalAppParam* _this)
|
||||
{
|
||||
return _this->GetStartUrl();
|
||||
}
|
||||
|
||||
public:
|
||||
/* +0x1A5C3C */ uint8be m_ParamPack[0x200];
|
||||
/* +0x1A663B */ uint8be m_ServiceToken[0x201]; // IndependentServiceToken for Miiverse title
|
||||
/* +0x1A5E3C */ uint8be m_StartUrl[0x7ff]; // https://portal-us.olv.nintendo.net/titles/show?src=menu
|
||||
};
|
||||
|
||||
namespace Report
|
||||
{
|
||||
@ -164,7 +167,6 @@ namespace nn
|
||||
static void loadOliveInitializeTypes()
|
||||
{
|
||||
cafeExportRegisterFunc(Initialize, "nn_olv", "Initialize__Q2_2nn3olvFPCQ3_2nn3olv15InitializeParam", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(InitializePortalApp, "nn_olv", "InitializePortalApp__Q3_2nn3olv6hiddenFPQ4_2nn3olv6hidden14PortalAppParamPCQ3_2nn3olv15InitializeParam", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(IsInitialized, "nn_olv", "IsInitialized__Q2_2nn3olvFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(Report::GetReportTypes, "nn_olv", "GetReportTypes__Q3_2nn3olv6ReportFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(Report::SetReportTypes, "nn_olv", "SetReportTypes__Q3_2nn3olv6ReportFUi", LogType::NN_OLV);
|
||||
@ -175,7 +177,11 @@ namespace nn
|
||||
cafeExportRegisterFunc(InitializeParam::__SetReportTypes, "nn_olv", "SetReportTypes__Q3_2nn3olv15InitializeParamFUi", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(InitializeParam::__SetSysArgs, "nn_olv", "SetSysArgs__Q3_2nn3olv15InitializeParamFPCvUi", LogType::NN_OLV);
|
||||
|
||||
cafeExportRegisterFunc(InitializePortalApp, "nn_olv", "InitializePortalApp__Q3_2nn3olv6hiddenFPQ4_2nn3olv6hidden14PortalAppParamPCQ3_2nn3olv15InitializeParam", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(PortalAppParam::__ctor, "nn_olv", "__ct__Q4_2nn3olv6hidden14PortalAppParamFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(PortalAppParam::__GetParamPack, "nn_olv", "GetParamPack__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(PortalAppParam::__GetServiceToken, "nn_olv", "GetServiceToken__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
cafeExportRegisterFunc(PortalAppParam::__GetStartUrl, "nn_olv", "GetStartUrl__Q4_2nn3olv6hidden14PortalAppParamCFv", LogType::NN_OLV);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user