prepo: Update implementation for 10.x changes (#1361)

* prepo: Update implementation for 10.x changes

On 10.x, Nintendo changed yet another time the prepo SaveReport &
SaveReportWithUser command ids.

This PR add support for command 10104 & 10105 and update naming of the
old variants to match switchbrew.

* Fix misalign and remove a ToString

* Address jD's comment
This commit is contained in:
Mary 2020-07-05 02:58:11 +02:00 committed by GitHub
parent 686eceb9f6
commit 43b78ae157
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -17,22 +17,8 @@ namespace Ryujinx.HLE.HOS.Services.Prepo
public IPrepoService(ServiceCtx context) { } public IPrepoService(ServiceCtx context) { }
[Command(10100)] // 1.0.0-5.1.0 [Command(10100)] // 1.0.0-5.1.0
// SaveReport(u64, pid, buffer<u8, 9>, buffer<bytes, 5>) [Command(10102)] // 6.0.0-9.2.0
public ResultCode SaveReportOld(ServiceCtx context) [Command(10104)] // 10.0.0+
{
// We don't care about the differences since we don't use the play report.
return ProcessReport(context, withUserID: false);
}
[Command(10101)] // 1.0.0-5.1.0
// SaveReportWithUserOld(nn::account::Uid, u64, pid, buffer<u8, 9>, buffer<bytes, 5>)
public ResultCode SaveReportWithUserOld(ServiceCtx context)
{
// We don't care about the differences since we don't use the play report.
return ProcessReport(context, withUserID: true);
}
[Command(10102)] // 6.0.0+
// SaveReport(u64, pid, buffer<u8, 9>, buffer<bytes, 5>) // SaveReport(u64, pid, buffer<u8, 9>, buffer<bytes, 5>)
public ResultCode SaveReport(ServiceCtx context) public ResultCode SaveReport(ServiceCtx context)
{ {
@ -40,7 +26,9 @@ namespace Ryujinx.HLE.HOS.Services.Prepo
return ProcessReport(context, withUserID: false); return ProcessReport(context, withUserID: false);
} }
[Command(10103)] // 6.0.0+ [Command(10101)] // 1.0.0-5.1.0
[Command(10103)] // 6.0.0-9.2.0
[Command(10105)] // 10.0.0+
// SaveReportWithUser(nn::account::Uid, u64, pid, buffer<u8, 9>, buffer<bytes, 5>) // SaveReportWithUser(nn::account::Uid, u64, pid, buffer<u8, 9>, buffer<bytes, 5>)
public ResultCode SaveReportWithUser(ServiceCtx context) public ResultCode SaveReportWithUser(ServiceCtx context)
{ {
@ -71,8 +59,8 @@ namespace Ryujinx.HLE.HOS.Services.Prepo
private ResultCode ProcessReport(ServiceCtx context, bool withUserID) private ResultCode ProcessReport(ServiceCtx context, bool withUserID)
{ {
UserId userId = withUserID ? context.RequestData.ReadStruct<UserId>() : new UserId(); UserId userId = withUserID ? context.RequestData.ReadStruct<UserId>() : new UserId();
string gameRoom = StringUtils.ReadUtf8String(context); string gameRoom = StringUtils.ReadUtf8String(context);
if (withUserID) if (withUserID)
{ {
@ -114,7 +102,7 @@ namespace Ryujinx.HLE.HOS.Services.Prepo
if (!userId.IsNull) if (!userId.IsNull)
{ {
builder.AppendLine($" UserId: {userId.ToString()}"); builder.AppendLine($" UserId: {userId}");
} }
builder.AppendLine($" Room: {room}"); builder.AppendLine($" Room: {room}");