diff --git a/src/core/libraries/libc/libc.cpp b/src/core/libraries/libc/libc.cpp index 5de84738..d709515e 100644 --- a/src/core/libraries/libc/libc.cpp +++ b/src/core/libraries/libc/libc.cpp @@ -444,6 +444,8 @@ void libcSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("cCXjU72Z0Ow", "libc", 1, "libc", 1, 1, ps4__Sin); LIB_FUNCTION("ZtjspkJQ+vw", "libc", 1, "libc", 1, 1, ps4__Fsin); LIB_FUNCTION("dnaeGXbjP6E", "libc", 1, "libc", 1, 1, ps4_exp2); + LIB_FUNCTION("1D0H2KNjshE", "libc", 1, "libc", 1, 1, ps4_powf); + LIB_FUNCTION("DDHG1a6+3q0", "libc", 1, "libc", 1, 1, ps4_roundf); // string functions LIB_FUNCTION("Ovb2dSJOAuE", "libc", 1, "libc", 1, 1, ps4_strcmp); @@ -470,6 +472,7 @@ void libcSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("rQFVBXp-Cxg", "libc", 1, "libc", 1, 1, ps4_fseek); LIB_FUNCTION("SHlt7EhOtqA", "libc", 1, "libc", 1, 1, ps4_fgetpos); LIB_FUNCTION("lbB+UlZqVG0", "libc", 1, "libc", 1, 1, ps4_fread); + LIB_FUNCTION("Qazy8LmXTvw", "libc", 1, "libc", 1, 1, ps4_ftell); // misc LIB_OBJ("P330P3dFF68", "libc", 1, "libc", 1, 1, &g_need_sceLibc); diff --git a/src/core/libraries/libc/libc_math.cpp b/src/core/libraries/libc/libc_math.cpp index 89acb4d7..281585c6 100644 --- a/src/core/libraries/libc/libc_math.cpp +++ b/src/core/libraries/libc/libc_math.cpp @@ -26,6 +26,14 @@ double PS4_SYSV_ABI ps4_pow(double base, double exponent) { return pow(base, exponent); } +float PS4_SYSV_ABI ps4_powf(float x, float y) { + return powf(x, y); +} + +float PS4_SYSV_ABI ps4_roundf(float arg) { + return roundf(arg); +} + double PS4_SYSV_ABI ps4__Sin(double x) { return sin(x); } diff --git a/src/core/libraries/libc/libc_math.h b/src/core/libraries/libc/libc_math.h index 3f49e6a5..83af029e 100644 --- a/src/core/libraries/libc/libc_math.h +++ b/src/core/libraries/libc/libc_math.h @@ -15,5 +15,7 @@ double PS4_SYSV_ABI ps4_pow(double base, double exponent); double PS4_SYSV_ABI ps4__Sin(double x); float PS4_SYSV_ABI ps4__Fsin(float arg); double PS4_SYSV_ABI ps4_exp2(double arg); +float PS4_SYSV_ABI ps4_powf(float x, float y); +float PS4_SYSV_ABI ps4_roundf(float arg); } // namespace Libraries::LibC diff --git a/src/core/libraries/libc/libc_stdio.cpp b/src/core/libraries/libc/libc_stdio.cpp index abbe072c..b1e94676 100644 --- a/src/core/libraries/libc/libc_stdio.cpp +++ b/src/core/libraries/libc/libc_stdio.cpp @@ -70,4 +70,8 @@ int PS4_SYSV_ABI ps4_puts(const char* s) { return std::puts(s); } +long PS4_SYSV_ABI ps4_ftell(FILE* stream) { + return ftell(stream); +} + } // namespace Libraries::LibC diff --git a/src/core/libraries/libc/libc_stdio.h b/src/core/libraries/libc/libc_stdio.h index 15cbe06a..806c17c2 100644 --- a/src/core/libraries/libc/libc_stdio.h +++ b/src/core/libraries/libc/libc_stdio.h @@ -18,5 +18,6 @@ int PS4_SYSV_ABI ps4_fclose(FILE* stream); int PS4_SYSV_ABI ps4_fseek(FILE* stream, long offset, int whence); int PS4_SYSV_ABI ps4_fgetpos(FILE* stream, fpos_t* pos); std::size_t PS4_SYSV_ABI ps4_fread(void* ptr, size_t size, size_t nmemb, FILE* stream); +long PS4_SYSV_ABI ps4_ftell(FILE* stream); } // namespace Libraries::LibC