mirror of
https://github.com/par274/sharpemu.git
synced 2026-08-01 23:49:44 +08:00
Agent/fix gen5 thread agc compat (#130)
* Fix Gen5 thread and AGC compatibility * Trim compatibility comments * Report selected Vulkan GPU * Clean up CPU title label * Improve emulator frame pacing and performance * Regenerate package locks with pinned SDK --------- Co-authored-by: Spooks4576 <Spooks4576@users.noreply.github.com>
This commit is contained in:
@@ -53,8 +53,19 @@ public static class NpManagerExports
|
||||
LibraryName = "libSceNpManager")]
|
||||
public static int NpGetOnlineId(CpuContext ctx)
|
||||
{
|
||||
ctx[CpuRegister.Rax] = 0;
|
||||
return (int)OrbisGen2Result.ORBIS_GEN2_OK;
|
||||
// Gen5 ABI: user ID, then output structure.
|
||||
return WriteOfflineOnlineId(ctx, ctx[CpuRegister.Rsi]);
|
||||
}
|
||||
|
||||
[SysAbiExport(
|
||||
Nid = "rbknaUjpqWo",
|
||||
ExportName = "sceNpGetOnlineIdA",
|
||||
Target = Generation.Gen5,
|
||||
LibraryName = "libSceNpManager")]
|
||||
public static int NpGetOnlineIdA(CpuContext ctx)
|
||||
{
|
||||
// The A variant takes a user ID before OnlineId.
|
||||
return WriteOfflineOnlineId(ctx, ctx[CpuRegister.Rsi]);
|
||||
}
|
||||
|
||||
[SysAbiExport(
|
||||
@@ -169,4 +180,19 @@ public static class NpManagerExports
|
||||
|
||||
Console.Error.WriteLine($"[LOADER][TRACE] np.{message}");
|
||||
}
|
||||
|
||||
private static int WriteOfflineOnlineId(CpuContext ctx, ulong address)
|
||||
{
|
||||
if (address == 0)
|
||||
{
|
||||
return ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_ERROR_INVALID_ARGUMENT);
|
||||
}
|
||||
|
||||
// SceNpOnlineId is a 16-byte handle plus four trailing bytes.
|
||||
Span<byte> onlineId = stackalloc byte[20];
|
||||
"Player"u8.CopyTo(onlineId);
|
||||
return ctx.Memory.TryWrite(address, onlineId)
|
||||
? ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_OK)
|
||||
: ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_ERROR_MEMORY_FAULT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,18 @@ public static class NpWebApi2Exports
|
||||
return ctx.SetReturn(0);
|
||||
}
|
||||
|
||||
[SysAbiExport(
|
||||
Nid = "WV1GwM32NgY",
|
||||
ExportName = "sceNpWebApi2InitializeForToolkit",
|
||||
Target = Generation.Gen4 | Generation.Gen5,
|
||||
LibraryName = "libSceNpWebApi2")]
|
||||
public static int NpWebApi2InitializeAlt(CpuContext ctx)
|
||||
{
|
||||
Interlocked.Exchange(ref _initialized, 1);
|
||||
TraceNpWebApi2("init-alt", unchecked((int)ctx[CpuRegister.Rdi]), ctx[CpuRegister.Rsi]);
|
||||
return ctx.SetReturn(0);
|
||||
}
|
||||
|
||||
[SysAbiExport(
|
||||
Nid = "bEvXpcEk200",
|
||||
ExportName = "sceNpWebApi2Terminate",
|
||||
|
||||
Reference in New Issue
Block a user