diff --git a/rpcs3/Emu/Cell/lv2/lv2.cpp b/rpcs3/Emu/Cell/lv2/lv2.cpp index b177043651..333df38a9c 100644 --- a/rpcs3/Emu/Cell/lv2/lv2.cpp +++ b/rpcs3/Emu/Cell/lv2/lv2.cpp @@ -425,7 +425,7 @@ const std::array, 1024> g_ppu_sysc BIND_SYSC(_sys_game_watchdog_clear), //374 (0x176) NULL_FUNC(sys_game_set_system_sw_version), //375 (0x177) ROOT BIND_SYSC(_sys_game_get_system_sw_version), //376 (0x178) ROOT - NULL_FUNC(sys_sm_set_shop_mode), //377 (0x179) ROOT + BIND_SYSC(sys_sm_set_shop_mode), //377 (0x179) ROOT BIND_SYSC(sys_sm_get_ext_event2), //378 (0x17A) ROOT BIND_SYSC(sys_sm_shutdown), //379 (0x17B) ROOT BIND_SYSC(sys_sm_get_params), //380 (0x17C) DBG diff --git a/rpcs3/Emu/Cell/lv2/sys_sm.cpp b/rpcs3/Emu/Cell/lv2/sys_sm.cpp index 0bed5f7035..5700be9aee 100644 --- a/rpcs3/Emu/Cell/lv2/sys_sm.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_sm.cpp @@ -84,6 +84,13 @@ error_code sys_sm_shutdown(ppu_thread& ppu, u16 op, vm::ptr param, u64 siz return CELL_OK; } +error_code sys_sm_set_shop_mode(s32 mode) +{ + sys_sm.todo("sys_sm_set_shop_mode(mode=0x%x)", mode); + + return CELL_OK; +} + error_code sys_sm_control_led(u8 led, u8 action) { sys_sm.todo("sys_sm_control_led(led=0x%x, action=0x%x)", led, action); diff --git a/rpcs3/Emu/Cell/lv2/sys_sm.h b/rpcs3/Emu/Cell/lv2/sys_sm.h index 862d827906..9e42e8f379 100644 --- a/rpcs3/Emu/Cell/lv2/sys_sm.h +++ b/rpcs3/Emu/Cell/lv2/sys_sm.h @@ -8,6 +8,7 @@ error_code sys_sm_get_ext_event2(vm::ptr a1, vm::ptr a2, vm::ptr a3, u64 a4); error_code sys_sm_shutdown(ppu_thread& ppu, u16 op, vm::ptr param, u64 size); error_code sys_sm_get_params(vm::ptr a, vm::ptr b, vm::ptr c, vm::ptr d); +error_code sys_sm_set_shop_mode(s32 mode); error_code sys_sm_control_led(u8 led, u8 action); error_code sys_sm_ring_buzzer(u64 packet, u64 a1, u64 a2); constexpr auto sys_sm_ring_buzzer2 = sys_sm_ring_buzzer; diff --git a/rpcs3/Emu/Cell/lv2/sys_ss.cpp b/rpcs3/Emu/Cell/lv2/sys_ss.cpp index 99f525fc9d..f647f49087 100644 --- a/rpcs3/Emu/Cell/lv2/sys_ss.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_ss.cpp @@ -124,19 +124,16 @@ error_code sys_ss_access_control_engine(u64 pkg_id, u64 a2, u64 a3) return CELL_OK; } -s32 sys_ss_get_console_id(vm::ptr buf) +error_code sys_ss_get_console_id(vm::ptr buf) { - sys_ss.todo("sys_ss_get_console_id(buf=*0x%x)", buf); + sys_ss.notice("sys_ss_get_console_id(buf=*0x%x)", buf); - // TODO: Return some actual IDPS? - *buf = 0; - - return CELL_OK; + return sys_ss_appliance_info_manager(0x19003, buf); } -s32 sys_ss_get_open_psid(vm::ptr psid) +error_code sys_ss_get_open_psid(vm::ptr psid) { - sys_ss.warning("sys_ss_get_open_psid(psid=*0x%x)", psid); + sys_ss.notice("sys_ss_get_open_psid(psid=*0x%x)", psid); psid->high = g_cfg.sys.console_psid_high; psid->low = g_cfg.sys.console_psid_low; @@ -146,7 +143,7 @@ s32 sys_ss_get_open_psid(vm::ptr psid) error_code sys_ss_appliance_info_manager(u32 code, vm::ptr buffer) { - sys_ss.warning("sys_ss_appliance_info_manager(code=0x%x, buffer=*0x%x)", code, buffer); + sys_ss.notice("sys_ss_appliance_info_manager(code=0x%x, buffer=*0x%x)", code, buffer); if (!buffer) { diff --git a/rpcs3/Emu/Cell/lv2/sys_ss.h b/rpcs3/Emu/Cell/lv2/sys_ss.h index 99fcba19e4..734a52dc05 100644 --- a/rpcs3/Emu/Cell/lv2/sys_ss.h +++ b/rpcs3/Emu/Cell/lv2/sys_ss.h @@ -20,8 +20,8 @@ struct CellSsOpenPSID error_code sys_ss_random_number_generator(u64 pkg_id, vm::ptr buf, u64 size); error_code sys_ss_access_control_engine(u64 pkg_id, u64 a2, u64 a3); -s32 sys_ss_get_console_id(vm::ptr buf); -s32 sys_ss_get_open_psid(vm::ptr psid); +error_code sys_ss_get_console_id(vm::ptr buf); +error_code sys_ss_get_open_psid(vm::ptr psid); error_code sys_ss_appliance_info_manager(u32 code, vm::ptr buffer); error_code sys_ss_get_cache_of_product_mode(vm::ptr ptr); error_code sys_ss_secure_rtc(u64 cmd, u64 a2, u64 a3, u64 a4);