[Json] Track the global special-float handler

Co-authored-by: Sekai <140012992+SekaixX@users.noreply.github.com>
This commit is contained in:
ParantezTech 2026-10-08 17:28:24 +03:00
parent 077c9a940f
commit d31138fcca
2 changed files with 25 additions and 0 deletions

View File

@ -141,6 +141,25 @@ public static class JsonExports
InitializerSetGlobalNullAccessCallback(ctx);
#pragma warning restore SHEM004
[SysAbiExport(
Nid = "i1393UBWu1U",
ExportName = "_ZN3sce4Json11Initializer28setGlobalSpecialFloatHandlerEPFKNS0_5ValueENS0_12FunctionTypeEdPS3_PvPbES6_",
Target = Generation.Gen4 | Generation.Gen5,
LibraryName = "libSceJson")]
public static int InitializerSetGlobalSpecialFloatHandler(CpuContext ctx)
{
var thisAddress = ctx[CpuRegister.Rdi];
if (thisAddress == 0)
{
return SetReturn(ctx, (int)OrbisGen2Result.ORBIS_GEN2_ERROR_INVALID_ARGUMENT);
}
JsonObjectHeap.GlobalSpecialFloatHandler = ctx[CpuRegister.Rsi];
JsonObjectHeap.GlobalSpecialFloatHandlerContext = ctx[CpuRegister.Rdx];
TraceJson("Initializer.setGlobalSpecialFloatHandler", thisAddress, ctx[CpuRegister.Rsi]);
return SetReturn(ctx, 0);
}
[SysAbiExport(
Nid = "WSOuge5IsCg",
ExportName = "_ZN3sce4Json14InitParameter2C1Ev",

View File

@ -87,6 +87,10 @@ internal static class JsonObjectHeap
public static ulong GlobalNullAccessCallbackContext;
public static ulong GlobalSpecialFloatHandler;
public static ulong GlobalSpecialFloatHandlerContext;
public static void SetValue(ulong address, JsonValueState state) => Values[address] = state;
public static void RemoveValue(ulong address) => Values.TryRemove(address, out _);
@ -106,5 +110,7 @@ internal static class JsonObjectHeap
Strings.Clear();
GlobalNullAccessCallback = 0;
GlobalNullAccessCallbackContext = 0;
GlobalSpecialFloatHandler = 0;
GlobalSpecialFloatHandlerContext = 0;
}
}