Browse Source

add prepo

pull/3004/head
Maufeat 3 months ago
committed by crueter
parent
commit
7ca5c47fc9
  1. 1
      src/core/file_sys/savedata_factory.cpp
  2. 60
      src/core/hle/service/prepo/prepo.cpp

1
src/core/file_sys/savedata_factory.cpp

@ -95,6 +95,7 @@ std::string SaveDataFactory::GetSaveDataSpaceIdPath(SaveDataSpaceId space) {
case SaveDataSpaceId::System:
return "/system/";
case SaveDataSpaceId::User:
case SaveDataSpaceId::SdUser:
return "/user/";
case SaveDataSpaceId::Temporary:
return "/temp/";

60
src/core/hle/service/prepo/prepo.cpp

@ -27,8 +27,10 @@ public:
{10200, &PlayReport::RequestImmediateTransmission, "RequestImmediateTransmission"},
{10300, &PlayReport::GetTransmissionStatus, "GetTransmissionStatus"},
{10400, &PlayReport::GetSystemSessionId, "GetSystemSessionId"},
{20100, &PlayReport::SaveSystemReport, "SaveSystemReport"},
{20101, &PlayReport::SaveSystemReportWithUser, "SaveSystemReportWithUser"},
{20100, &PlayReport::SaveSystemReportOld, "SaveSystemReport"},
{20101, &PlayReport::SaveSystemReportWithUserOld, "SaveSystemReportWithUser"},
{20102, &PlayReport::SaveSystemReport, "SaveSystemReport"},
{20103, &PlayReport::SaveSystemReportWithUser, "SaveSystemReportWithUser"},
{20200, nullptr, "SetOperationMode"},
{30100, nullptr, "ClearStorage"},
{30200, nullptr, "ClearStatistics"},
@ -121,24 +123,21 @@ private:
rb.Push(system_session_id);
}
void SaveSystemReport(HLERequestContext& ctx) {
void SaveSystemReportOld(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto title_id = rp.PopRaw<u64>();
const auto data1 = ctx.ReadBufferA(0);
const auto data2 = ctx.ReadBufferX(0);
LOG_DEBUG(Service_PREPO, "called, title_id={:016X}, data1_size={:016X}, data2_size={:016X}",
LOG_ERROR(Service_PREPO, "called, title_id={:016X}, data1_size={:016X}, data2_size={:016X}",
title_id, data1.size(), data2.size());
const auto& reporter{system.GetReporter()};
reporter.SavePlayReport(Core::Reporter::PlayReportType::System, title_id, {data1, data2});
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
void SaveSystemReportWithUser(HLERequestContext& ctx) {
void SaveSystemReportWithUserOld(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto user_id = rp.PopRaw<u128>();
const auto title_id = rp.PopRaw<u64>();
@ -146,7 +145,7 @@ private:
const auto data1 = ctx.ReadBufferA(0);
const auto data2 = ctx.ReadBufferX(0);
LOG_DEBUG(Service_PREPO,
LOG_ERROR(Service_PREPO,
"called, user_id={:016X}{:016X}, title_id={:016X}, data1_size={:016X}, "
"data2_size={:016X}",
user_id[1], user_id[0], title_id, data1.size(), data2.size());
@ -158,6 +157,49 @@ private:
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
// (21.0.0+) buffers: [0x9 (X), 0x5 (A)], inbytes: 0x10
void SaveSystemReport(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto field0 = rp.PopRaw<u64>();
const auto title_id = rp.PopRaw<u64>();
const auto data_x = ctx.ReadBufferX(0);
const auto data_a = ctx.ReadBufferA(0);
LOG_ERROR(Service_PREPO,
"called, field0={}, title_id={:016X}, data_a_size={}, data_x_size={}",
field0, title_id, data_a.size(), data_x.size());
const auto& reporter{system.GetReporter()};
reporter.SavePlayReport(Core::Reporter::PlayReportType::System, title_id, {data_a, data_x});
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
// (21.0.0+) buffers: [0x9 (X), 0x5 (A)], inbytes: 0x20
void SaveSystemReportWithUser(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto user_id = rp.PopRaw<u128>();
const auto title_id = rp.PopRaw<u64>();
const auto reserved = rp.PopRaw<u64>();
const auto data_x = ctx.ReadBufferX(0);
const auto data_a = ctx.ReadBufferA(0);
LOG_ERROR(Service_PREPO,
"called, user_id={:016X}{:016X}, title_id={:016X}, reserved={}, data_a_size={}, data_x_size={}",
user_id[1], user_id[0], title_id, reserved, data_a.size(), data_x.size());
const auto& reporter{system.GetReporter()};
reporter.SavePlayReport(Core::Reporter::PlayReportType::System, title_id, {data_a, data_x},
std::nullopt, user_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
};
void LoopProcess(Core::System& system) {

Loading…
Cancel
Save