mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-07-04 23:31:19 +01:00
Reworked incorrect nifm stubs (#1355)
* Reworked incorrect nifm stubs Need confirmation on `CreateTemporaryNetworkProfile`, unsure which game uses it but according to reversing. It should return a uuid which we currently don't do. Any 0 client id is considered an invalid client id. GetRequestState 0 is considered invalid. * Fixups for nifm
This commit is contained in:
parent
52fb86c65c
commit
0432af5ad1
1 changed files with 10 additions and 3 deletions
|
@ -65,7 +65,7 @@ private:
|
||||||
LOG_WARNING(Service_NIFM, "(STUBBED) called");
|
LOG_WARNING(Service_NIFM, "(STUBBED) called");
|
||||||
IPC::ResponseBuilder rb{ctx, 3};
|
IPC::ResponseBuilder rb{ctx, 3};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.Push<u32>(0);
|
rb.Push<u32>(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetResult(Kernel::HLERequestContext& ctx) {
|
void GetResult(Kernel::HLERequestContext& ctx) {
|
||||||
|
@ -114,10 +114,11 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void GetClientId(Kernel::HLERequestContext& ctx) {
|
void GetClientId(Kernel::HLERequestContext& ctx) {
|
||||||
|
static constexpr u32 client_id = 1;
|
||||||
LOG_WARNING(Service_NIFM, "(STUBBED) called");
|
LOG_WARNING(Service_NIFM, "(STUBBED) called");
|
||||||
IPC::ResponseBuilder rb{ctx, 4};
|
IPC::ResponseBuilder rb{ctx, 4};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.Push<u64>(0);
|
rb.Push<u64>(client_id); // Client ID needs to be non zero otherwise it's considered invalid
|
||||||
}
|
}
|
||||||
void CreateScanRequest(Kernel::HLERequestContext& ctx) {
|
void CreateScanRequest(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
||||||
|
@ -141,10 +142,16 @@ private:
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
void CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx) {
|
void CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
ASSERT_MSG(ctx.GetReadBufferSize() == 0x17c, "NetworkProfileData is not the correct size");
|
||||||
|
u128 uuid{};
|
||||||
|
auto buffer = ctx.ReadBuffer();
|
||||||
|
std::memcpy(&uuid, buffer.data() + 8, sizeof(u128));
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 6, 0, 1};
|
||||||
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.PushIpcInterface<INetworkProfile>();
|
rb.PushIpcInterface<INetworkProfile>();
|
||||||
|
rb.PushRaw<u128>(uuid);
|
||||||
|
|
||||||
LOG_DEBUG(Service_NIFM, "called");
|
LOG_DEBUG(Service_NIFM, "called");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue