diff --git a/rpcs3/Emu/Cell/lv2/lv2.cpp b/rpcs3/Emu/Cell/lv2/lv2.cpp index bdac695b88..dcced8143d 100644 --- a/rpcs3/Emu/Cell/lv2/lv2.cpp +++ b/rpcs3/Emu/Cell/lv2/lv2.cpp @@ -744,7 +744,7 @@ std::array g_ppu_syscall_table BIND_FUNC(sys_fs_get_block_size), //822 (0x336) null_func,//BIND_FUNC(sys_fs_acl_read), //823 (0x337) null_func,//BIND_FUNC(sys_fs_acl_write), //824 (0x338) - null_func,//BIND_FUNC(sys_fs_lsn_get_cda_size), //825 (0x339) + BIND_FUNC(sys_fs_lsn_get_cda_size), //825 (0x339) null_func,//BIND_FUNC(sys_fs_lsn_get_cda), //826 (0x33A) BIND_FUNC(sys_fs_lsn_lock), //827 (0x33B) BIND_FUNC(sys_fs_lsn_unlock), //828 (0x33C) diff --git a/rpcs3/Emu/Cell/lv2/sys_fs.cpp b/rpcs3/Emu/Cell/lv2/sys_fs.cpp index 71c43902bb..8500f3a819 100644 --- a/rpcs3/Emu/Cell/lv2/sys_fs.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_fs.cpp @@ -1146,6 +1146,22 @@ error_code sys_fs_utime(vm::ps3::cptr path, vm::ps3::cptr t return CELL_OK; } +error_code sys_fs_lsn_get_cda_size(u32 fd, vm::ps3::ptr ptr) +{ + sys_fs.warning("sys_fs_lsn_get_cda_size(fd=%d, ptr=*0x%x)", fd, ptr); + + const auto file = idm::get(fd); + + if (!file) + { + return CELL_EBADF; + } + + // TODO + *ptr = 0; + return CELL_OK; +} + error_code sys_fs_lsn_lock(u32 fd) { sys_fs.trace("sys_fs_lsn_lock(fd=%d)", fd); diff --git a/rpcs3/Emu/Cell/lv2/sys_fs.h b/rpcs3/Emu/Cell/lv2/sys_fs.h index 3184cc54a4..7185d20034 100644 --- a/rpcs3/Emu/Cell/lv2/sys_fs.h +++ b/rpcs3/Emu/Cell/lv2/sys_fs.h @@ -351,5 +351,6 @@ error_code sys_fs_truncate(vm::ps3::cptr path, u64 size); error_code sys_fs_ftruncate(u32 fd, u64 size); error_code sys_fs_chmod(vm::ps3::cptr path, s32 mode); error_code sys_fs_utime(vm::ps3::cptr path, vm::ps3::cptr timep); +error_code sys_fs_lsn_get_cda_size(u32 fd, vm::ps3::ptr ptr); error_code sys_fs_lsn_lock(u32 fd); error_code sys_fs_lsn_unlock(u32 fd);