This commit is contained in:
Pavel 2025-07-17 11:07:57 +03:00
parent 9bff577cee
commit d34de06dcd
1 changed files with 62 additions and 41 deletions

View File

@ -6,23 +6,23 @@ unit kern_regmgr;
interface interface
const const
SCE_REGMGR_ENT_KEY_SYSTEM_LIBC_intmem_peak_size = $02C30100; SCE_REGMGR_ENT_KEY_SYSTEM_LIBC_intmem_peak_size = $02C30100;
SCE_REGMGR_ENT_KEY_SYSTEM_LIBC_intmem_shortage_count = $02C30200; SCE_REGMGR_ENT_KEY_SYSTEM_LIBC_intmem_shortage_count = $02C30200;
SCE_REGMGR_ENT_KEY_VIDEOOUT_enable_supersampling_mode = $0A170000; SCE_REGMGR_ENT_KEY_VIDEOOUT_enable_supersampling_mode = $0A170000;
SCE_REGMGR_ENT_KEY_NP_env = $19800000; SCE_REGMGR_ENT_KEY_NP_env = $19800000;
SCE_REGMGR_ENT_KEY_NP_debug = $19810000; SCE_REGMGR_ENT_KEY_NP_debug = $19810000;
SCE_REGMGR_ENT_KEY_BROWSER_DEBUG_notification = $3CC80700; SCE_REGMGR_ENT_KEY_BROWSER_DEBUG_notification = $3CC80700;
SCE_REGMGR_ENT_KEY_MORPHEUS_DEBUG_vr_capture = $58800C00; SCE_REGMGR_ENT_KEY_MORPHEUS_DEBUG_vr_capture = $58800C00;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_gpi00 = $78020400; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_gpi00 = $78020400;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_trc_notify = $78026400; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_trc_notify = $78026400;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sys_prx_preload = $78028A00; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sys_prx_preload = $78028A00;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_use_default_lib = $78028300; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_use_default_lib = $78028300;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_game_intmem_dbg = $7802BF00; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_game_intmem_dbg = $7802BF00;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sce_module_dbg = $7802C000; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sce_module_dbg = $7802C000;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_preload_chk_off = $78020500; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_preload_chk_off = $78020500;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_020B00 = $78020B00; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_disable_sce_module_ver_chk = $78020B00;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_game_heap_trace = $7802B700; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_game_heap_trace = $7802B700;
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_expose_under_2k = $7802B900; SCE_REGMGR_ENT_KEY_DEVENV_TOOL_expose_under_2k = $7802B900;
function sys_regmgr_call(op,key:DWORD;presult,pvalue:Pointer;vlen:QWORD):Integer; function sys_regmgr_call(op,key:DWORD;presult,pvalue:Pointer;vlen:QWORD):Integer;
function sys_workaround8849(key:DWORD):Integer; function sys_workaround8849(key:DWORD):Integer;
@ -109,6 +109,35 @@ begin
(data[3] shl 24) (data[3] shl 24)
end; end;
function sceRegMgrGetInt(key:DWORD;p_out:PInteger):Integer;
begin
Result:=0;
case key of
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_game_intmem_dbg :p_out^:=0; //_malloc_init_lv2
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sce_module_dbg :p_out^:=0; //libSceSysmodule (bit 1,2 -> load debug lib)
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_preload_chk_off :p_out^:=0; //libSceSysmodule (print errors?)
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_disable_sce_module_ver_chk:p_out^:=0; //libSceSysmodule (preload module?)
SCE_REGMGR_ENT_KEY_MORPHEUS_DEBUG_vr_capture :p_out^:=0; //libkernel
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_game_heap_trace :p_out^:=0; //libSceLibcInternal (sceLibcHeapGetTraceInfo -> get_segment_info)
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_expose_under_2k :p_out^:=0; //sceVideoOutOpen debug video modes?
SCE_REGMGR_ENT_KEY_VIDEOOUT_enable_supersampling_mode :p_out^:=0; //sceVideoOutOpen
SCE_REGMGR_ENT_KEY_SYSTEM_LIBC_intmem_peak_size :p_out^:=0; //libSceLibcInternal
SCE_REGMGR_ENT_KEY_SYSTEM_LIBC_intmem_shortage_count :p_out^:=0; //libSceLibcInternal
SCE_REGMGR_ENT_KEY_NP_debug :p_out^:=0; //sys_workaround8849, libSceSysUtil
SCE_REGMGR_ENT_KEY_BROWSER_DEBUG_notification :p_out^:=0; //sys_workaround8849
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_trc_notify :p_out^:=0; //sys_workaround8849
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sys_prx_preload :p_out^:=0; //sys_workaround8849
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_use_default_lib :p_out^:=0; //sys_workaround8849
else
Exit(-1);
end;
end;
function sys_regmgr_call(op,key:DWORD;presult,pvalue:Pointer;vlen:QWORD):Integer; function sys_regmgr_call(op,key:DWORD;presult,pvalue:Pointer;vlen:QWORD):Integer;
label label
_copyout_value, _copyout_value,
@ -155,25 +184,11 @@ begin
goto _err; goto _err;
end; end;
case skey of Result:=sceRegMgrGetInt(skey,@data.int_val);
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_game_intmem_dbg :data.int_val:=0; //_malloc_init_lv2 if (Result<>0) then
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sce_module_dbg :data.int_val:=0; //libSceSysmodule (bit 1,2 -> load debug lib) begin
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_preload_chk_off :data.int_val:=0; //libSceSysmodule (print errors?) print_error_td(' enc:0x'+HexStr(data.enc1,16)+'->key:0x'+HexStr(skey,8));
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_020B00 :data.int_val:=0; //libSceSysmodule (preload module?) Assert(False);
SCE_REGMGR_ENT_KEY_MORPHEUS_DEBUG_vr_capture :data.int_val:=0; //libkernel
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_game_heap_trace :data.int_val:=0; //libSceLibcInternal (sceLibcHeapGetTraceInfo -> get_segment_info)
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_expose_under_2k :data.int_val:=0; //sceVideoOutOpen debug video modes?
SCE_REGMGR_ENT_KEY_VIDEOOUT_enable_supersampling_mode:data.int_val:=0; //sceVideoOutOpen
SCE_REGMGR_ENT_KEY_NP_debug :data.int_val:=0; //libSceSysUtil
SCE_REGMGR_ENT_KEY_SYSTEM_LIBC_intmem_peak_size :data.int_val:=0; //libSceLibcInternal
SCE_REGMGR_ENT_KEY_SYSTEM_LIBC_intmem_shortage_count :data.int_val:=0; //libSceLibcInternal
else
begin
print_error_td(' enc:0x'+HexStr(data.enc1,16)+'->key:0x'+HexStr(skey,8));
Assert(False);
end;
end; end;
_copyout_value: _copyout_value:
@ -269,20 +284,26 @@ end;
function sys_workaround8849(key:DWORD):Integer; function sys_workaround8849(key:DWORD):Integer;
var var
td:p_kthread; td:p_kthread;
int_val:Integer;
begin begin
td:=curkthread; td:=curkthread;
if (td=nil) then Exit(-1); if (td=nil) then Exit(-1);
Result:=0; Result:=0;
case key of case key of
SCE_REGMGR_ENT_KEY_NP_debug :td^.td_retval[0]:=0; //nop SCE_REGMGR_ENT_KEY_NP_debug ,
SCE_REGMGR_ENT_KEY_BROWSER_DEBUG_notification :td^.td_retval[0]:=0; //nop SCE_REGMGR_ENT_KEY_BROWSER_DEBUG_notification ,
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_trc_notify :td^.td_retval[0]:=0; //nop SCE_REGMGR_ENT_KEY_DEVENV_TOOL_trc_notify ,
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sys_prx_preload:td^.td_retval[0]:=0; //nop SCE_REGMGR_ENT_KEY_DEVENV_TOOL_sys_prx_preload,
SCE_REGMGR_ENT_KEY_DEVENV_TOOL_use_default_lib:td^.td_retval[0]:=0; //nop SCE_REGMGR_ENT_KEY_DEVENV_TOOL_use_default_lib:
begin
Result:=sceRegMgrGetInt(key,@int_val);
td^.td_retval[0]:=int_val;
end;
else else
Result:=EINVAL; Result:=EINVAL;
end; end;
end; end;