mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-04-20 19:44:46 +00:00
Merge branch 'shadps4-emu:main' into allocate-fixes
This commit is contained in:
commit
0475e263fa
73 changed files with 2176 additions and 162 deletions
|
@ -254,6 +254,8 @@ set(KERNEL_LIB src/core/libraries/kernel/sync/mutex.cpp
|
|||
|
||||
set(NETWORK_LIBS src/core/libraries/network/http.cpp
|
||||
src/core/libraries/network/http.h
|
||||
src/core/libraries/network/http2.cpp
|
||||
src/core/libraries/network/http2.h
|
||||
src/core/libraries/network/net.cpp
|
||||
src/core/libraries/network/netctl.cpp
|
||||
src/core/libraries/network/netctl.h
|
||||
|
@ -263,6 +265,8 @@ set(NETWORK_LIBS src/core/libraries/network/http.cpp
|
|||
src/core/libraries/network/net.h
|
||||
src/core/libraries/network/ssl.cpp
|
||||
src/core/libraries/network/ssl.h
|
||||
src/core/libraries/network/ssl2.cpp
|
||||
src/core/libraries/network/ssl2.h
|
||||
)
|
||||
|
||||
set(AVPLAYER_LIB src/core/libraries/avplayer/avplayer_common.cpp
|
||||
|
@ -426,6 +430,8 @@ set(NP_LIBS src/core/libraries/np_common/np_common.cpp
|
|||
src/core/libraries/np_trophy/trophy_ui.cpp
|
||||
src/core/libraries/np_trophy/trophy_ui.h
|
||||
src/core/libraries/np_trophy/np_trophy_error.h
|
||||
src/core/libraries/np_web_api/np_web_api.cpp
|
||||
src/core/libraries/np_web_api/np_web_api.h
|
||||
)
|
||||
|
||||
set(MISC_LIBS src/core/libraries/screenshot/screenshot.cpp
|
||||
|
|
2
dist/net.shadps4.shadPS4.metainfo.xml
vendored
2
dist/net.shadps4.shadPS4.metainfo.xml
vendored
|
@ -26,7 +26,7 @@
|
|||
</screenshot>
|
||||
<screenshot>
|
||||
<image type="source" translate="no">https://cdn.jsdelivr.net/gh/shadps4-emu/shadps4@main/documents/Screenshots/3.png</image>
|
||||
<caption>Yakuza Kiwami</caption>
|
||||
<caption>Yakuza 0</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image type="source" translate="no">https://cdn.jsdelivr.net/gh/shadps4-emu/shadps4@main/documents/Screenshots/4.png</image>
|
||||
|
|
2
externals/sdl3
vendored
2
externals/sdl3
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 3a1d76d298db023f6cf37fb08ee766f20a4e12ab
|
||||
Subproject commit 22422f7748d5128135995ed34c8f8012861c7332
|
|
@ -72,6 +72,7 @@ static bool checkCompatibilityOnStartup = false;
|
|||
static std::string trophyKey;
|
||||
|
||||
// Gui
|
||||
static bool load_game_size = true;
|
||||
std::vector<std::filesystem::path> settings_install_dirs = {};
|
||||
std::filesystem::path settings_addon_install_dir = {};
|
||||
u32 main_window_geometry_x = 400;
|
||||
|
@ -102,6 +103,14 @@ void setTrophyKey(std::string key) {
|
|||
trophyKey = key;
|
||||
}
|
||||
|
||||
bool GetLoadGameSizeEnabled() {
|
||||
return load_game_size;
|
||||
}
|
||||
|
||||
void setLoadGameSizeEnabled(bool enable) {
|
||||
load_game_size = enable;
|
||||
}
|
||||
|
||||
bool isNeoModeConsole() {
|
||||
return isNeo;
|
||||
}
|
||||
|
@ -650,6 +659,7 @@ void load(const std::filesystem::path& path) {
|
|||
if (data.contains("GUI")) {
|
||||
const toml::value& gui = data.at("GUI");
|
||||
|
||||
load_game_size = toml::find_or<bool>(gui, "loadGameSizeEnabled", true);
|
||||
m_icon_size = toml::find_or<int>(gui, "iconSize", 0);
|
||||
m_icon_size_grid = toml::find_or<int>(gui, "iconSizeGrid", 0);
|
||||
m_slider_pos = toml::find_or<int>(gui, "sliderPos", 0);
|
||||
|
@ -755,6 +765,7 @@ void save(const std::filesystem::path& path) {
|
|||
install_dirs.emplace_back(std::string{fmt::UTF(dirString.u8string()).data});
|
||||
}
|
||||
data["GUI"]["installDirs"] = install_dirs;
|
||||
data["GUI"]["loadGameSizeEnabled"] = load_game_size;
|
||||
|
||||
data["GUI"]["addonInstallDir"] =
|
||||
std::string{fmt::UTF(settings_addon_install_dir.u8string()).data};
|
||||
|
|
|
@ -17,6 +17,8 @@ void saveMainWindow(const std::filesystem::path& path);
|
|||
|
||||
std::string getTrophyKey();
|
||||
void setTrophyKey(std::string key);
|
||||
bool GetLoadGameSizeEnabled();
|
||||
void setLoadGameSizeEnabled(bool enable);
|
||||
bool getIsFullscreen();
|
||||
std::string getFullscreenMode();
|
||||
bool isNeoModeConsole();
|
||||
|
|
|
@ -95,13 +95,16 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
|
|||
SUB(Lib, SaveData) \
|
||||
SUB(Lib, SaveDataDialog) \
|
||||
SUB(Lib, Http) \
|
||||
SUB(Lib, Http2) \
|
||||
SUB(Lib, Ssl) \
|
||||
SUB(Lib, Ssl2) \
|
||||
SUB(Lib, SysModule) \
|
||||
SUB(Lib, Move) \
|
||||
SUB(Lib, NpCommon) \
|
||||
SUB(Lib, NpManager) \
|
||||
SUB(Lib, NpScore) \
|
||||
SUB(Lib, NpTrophy) \
|
||||
SUB(Lib, NpWebApi) \
|
||||
SUB(Lib, Screenshot) \
|
||||
SUB(Lib, LibCInternal) \
|
||||
SUB(Lib, AppContent) \
|
||||
|
|
|
@ -63,12 +63,15 @@ enum class Class : u8 {
|
|||
Lib_SaveData, ///< The LibSceSaveData implementation.
|
||||
Lib_SaveDataDialog, ///< The LibSceSaveDataDialog implementation.
|
||||
Lib_Ssl, ///< The LibSceSsl implementation.
|
||||
Lib_Ssl2, ///< The LibSceSsl2 implementation.
|
||||
Lib_Http, ///< The LibSceHttp implementation.
|
||||
Lib_Http2, ///< The LibSceHttp2 implementation.
|
||||
Lib_SysModule, ///< The LibSceSysModule implementation
|
||||
Lib_NpCommon, ///< The LibSceNpCommon implementation
|
||||
Lib_NpManager, ///< The LibSceNpManager implementation
|
||||
Lib_NpScore, ///< The LibSceNpScore implementation
|
||||
Lib_NpTrophy, ///< The LibSceNpTrophy implementation
|
||||
Lib_NpWebApi, ///< The LibSceWebApi implementation
|
||||
Lib_Screenshot, ///< The LibSceScreenshot implementation
|
||||
Lib_LibCInternal, ///< The LibCInternal implementation.
|
||||
Lib_AppContent, ///< The LibSceAppContent implementation.
|
||||
|
|
|
@ -105,7 +105,8 @@ void RegPopup::DrawDepthBuffer(const DepthBuffer& depth_data) {
|
|||
"DEPTH_SLICE.TILE_MAX", depth_buffer.depth_slice.tile_max,
|
||||
"Pitch()", depth_buffer.Pitch(),
|
||||
"Height()", depth_buffer.Height(),
|
||||
"Address()", depth_buffer.Address(),
|
||||
"DepthAddress()", depth_buffer.DepthAddress(),
|
||||
"StencilAddress()", depth_buffer.StencilAddress(),
|
||||
"NumSamples()", depth_buffer.NumSamples(),
|
||||
"NumBits()", depth_buffer.NumBits(),
|
||||
"GetDepthSliceSize()", depth_buffer.GetDepthSliceSize()
|
||||
|
|
|
@ -155,7 +155,7 @@ void RegView::DrawGraphicsRegs() {
|
|||
TableNextColumn();
|
||||
TextUnformatted("Depth buffer");
|
||||
TableNextColumn();
|
||||
if (regs.depth_buffer.Address() == 0 || !regs.depth_control.depth_enable) {
|
||||
if (regs.depth_buffer.DepthAddress() == 0 || !regs.depth_control.depth_enable) {
|
||||
TextUnformatted("N/A");
|
||||
} else {
|
||||
const char* text = last_selected_cb == depth_id && default_reg_popup.open ? "x" : "->";
|
||||
|
@ -241,7 +241,7 @@ void RegView::SetData(DebugStateType::RegDump _data, const std::string& base_tit
|
|||
default_reg_popup.open = false;
|
||||
if (last_selected_cb == depth_id) {
|
||||
const auto& has_depth =
|
||||
regs.depth_buffer.Address() != 0 && regs.depth_control.depth_enable;
|
||||
regs.depth_buffer.DepthAddress() != 0 && regs.depth_control.depth_enable;
|
||||
if (has_depth) {
|
||||
default_reg_popup.SetData(title, regs.depth_buffer, regs.depth_control);
|
||||
default_reg_popup.open = true;
|
||||
|
|
|
@ -339,6 +339,8 @@ int PS4_SYSV_ABI posix_pthread_condattr_setpshared(PthreadCondAttrT* attr, int p
|
|||
void RegisterCond(Core::Loader::SymbolsResolver* sym) {
|
||||
// Posix
|
||||
LIB_FUNCTION("mKoTx03HRWA", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_condattr_init);
|
||||
LIB_FUNCTION("dJcuQVn6-Iw", "libScePosix", 1, "libkernel", 1, 1,
|
||||
posix_pthread_condattr_destroy);
|
||||
LIB_FUNCTION("0TyVk4MSLt0", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_cond_init);
|
||||
LIB_FUNCTION("2MOy+rUfuhQ", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_cond_signal);
|
||||
LIB_FUNCTION("RXXqi4CtF8w", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_cond_destroy);
|
||||
|
@ -347,8 +349,11 @@ void RegisterCond(Core::Loader::SymbolsResolver* sym) {
|
|||
LIB_FUNCTION("mkx2fVhNMsg", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_cond_broadcast);
|
||||
|
||||
// Posix-Kernel
|
||||
LIB_FUNCTION("0TyVk4MSLt0", "libkernel", 1, "libkernel", 1, 1, posix_pthread_cond_init);
|
||||
LIB_FUNCTION("Op8TBGY5KHg", "libkernel", 1, "libkernel", 1, 1, posix_pthread_cond_wait);
|
||||
LIB_FUNCTION("mkx2fVhNMsg", "libkernel", 1, "libkernel", 1, 1, posix_pthread_cond_broadcast);
|
||||
LIB_FUNCTION("mKoTx03HRWA", "libkernel", 1, "libkernel", 1, 1, posix_pthread_condattr_init);
|
||||
LIB_FUNCTION("dJcuQVn6-Iw", "libkernel", 1, "libkernel", 1, 1, posix_pthread_condattr_destroy);
|
||||
|
||||
// Orbis
|
||||
LIB_FUNCTION("2Tb92quprl0", "libkernel", 1, "libkernel", 1, 1, ORBIS(scePthreadCondInit));
|
||||
|
|
|
@ -438,8 +438,11 @@ void RegisterMutex(Core::Loader::SymbolsResolver* sym) {
|
|||
LIB_FUNCTION("K-jXhbt2gn4", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_mutex_trylock);
|
||||
|
||||
// Posix-Kernel
|
||||
LIB_FUNCTION("ttHNfU+qDBU", "libkernel", 1, "libkernel", 1, 1, posix_pthread_mutex_init);
|
||||
LIB_FUNCTION("7H0iTOciTLo", "libkernel", 1, "libkernel", 1, 1, posix_pthread_mutex_lock);
|
||||
LIB_FUNCTION("2Z+PpY6CaJg", "libkernel", 1, "libkernel", 1, 1, posix_pthread_mutex_unlock);
|
||||
LIB_FUNCTION("dQHWEsJtoE4", "libkernel", 1, "libkernel", 1, 1, posix_pthread_mutexattr_init);
|
||||
LIB_FUNCTION("mDmgMOGVUqg", "libkernel", 1, "libkernel", 1, 1, posix_pthread_mutexattr_settype);
|
||||
|
||||
// Orbis
|
||||
LIB_FUNCTION("cmo1RIYva9o", "libkernel", 1, "libkernel", 1, 1, ORBIS(scePthreadMutexInit));
|
||||
|
|
|
@ -386,6 +386,9 @@ int PS4_SYSV_ABI posix_sched_get_priority_min() {
|
|||
}
|
||||
|
||||
int PS4_SYSV_ABI posix_pthread_rename_np(PthreadT thread, const char* name) {
|
||||
if (thread == nullptr) {
|
||||
return POSIX_EINVAL;
|
||||
}
|
||||
LOG_INFO(Kernel_Pthread, "name = {}", name);
|
||||
Common::SetThreadName(reinterpret_cast<void*>(thread->native_thr.GetHandle()), name);
|
||||
thread->name = name;
|
||||
|
@ -535,6 +538,7 @@ void RegisterThread(Core::Loader::SymbolsResolver* sym) {
|
|||
LIB_FUNCTION("6XG4B33N09g", "libScePosix", 1, "libkernel", 1, 1, sched_yield);
|
||||
|
||||
// Posix-Kernel
|
||||
LIB_FUNCTION("Z4QosVuAsA0", "libkernel", 1, "libkernel", 1, 1, posix_pthread_once);
|
||||
LIB_FUNCTION("EotR8a3ASf4", "libkernel", 1, "libkernel", 1, 1, posix_pthread_self);
|
||||
LIB_FUNCTION("OxhIB8LB-PQ", "libkernel", 1, "libkernel", 1, 1, posix_pthread_create);
|
||||
|
||||
|
|
|
@ -21,13 +21,16 @@
|
|||
#include "core/libraries/mouse/mouse.h"
|
||||
#include "core/libraries/move/move.h"
|
||||
#include "core/libraries/network/http.h"
|
||||
#include "core/libraries/network/http2.h"
|
||||
#include "core/libraries/network/net.h"
|
||||
#include "core/libraries/network/netctl.h"
|
||||
#include "core/libraries/network/ssl.h"
|
||||
#include "core/libraries/network/ssl2.h"
|
||||
#include "core/libraries/np_common/np_common.h"
|
||||
#include "core/libraries/np_manager/np_manager.h"
|
||||
#include "core/libraries/np_score/np_score.h"
|
||||
#include "core/libraries/np_trophy/np_trophy.h"
|
||||
#include "core/libraries/np_web_api/np_web_api.h"
|
||||
#include "core/libraries/pad/pad.h"
|
||||
#include "core/libraries/playgo/playgo.h"
|
||||
#include "core/libraries/playgo/playgo_dialog.h"
|
||||
|
@ -65,11 +68,13 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) {
|
|||
Libraries::MsgDialog::RegisterlibSceMsgDialog(sym);
|
||||
Libraries::AudioOut::RegisterlibSceAudioOut(sym);
|
||||
Libraries::Http::RegisterlibSceHttp(sym);
|
||||
Libraries::Http2::RegisterlibSceHttp2(sym);
|
||||
Libraries::Net::RegisterlibSceNet(sym);
|
||||
Libraries::NetCtl::RegisterlibSceNetCtl(sym);
|
||||
Libraries::SaveData::RegisterlibSceSaveData(sym);
|
||||
Libraries::SaveData::Dialog::RegisterlibSceSaveDataDialog(sym);
|
||||
Libraries::Ssl::RegisterlibSceSsl(sym);
|
||||
Libraries::Ssl2::RegisterlibSceSsl2(sym);
|
||||
Libraries::SysModule::RegisterlibSceSysmodule(sym);
|
||||
Libraries::Posix::Registerlibsceposix(sym);
|
||||
Libraries::AudioIn::RegisterlibSceAudioIn(sym);
|
||||
|
@ -77,6 +82,7 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) {
|
|||
Libraries::NpManager::RegisterlibSceNpManager(sym);
|
||||
Libraries::NpScore::RegisterlibSceNpScore(sym);
|
||||
Libraries::NpTrophy::RegisterlibSceNpTrophy(sym);
|
||||
Libraries::NpWebApi::RegisterlibSceNpWebApi(sym);
|
||||
Libraries::ScreenShot::RegisterlibSceScreenShot(sym);
|
||||
Libraries::AppContent::RegisterlibSceAppContent(sym);
|
||||
Libraries::PngDec::RegisterlibScePngDec(sym);
|
||||
|
|
360
src/core/libraries/network/http2.cpp
Normal file
360
src/core/libraries/network/http2.cpp
Normal file
|
@ -0,0 +1,360 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "common/logging/log.h"
|
||||
#include "core/libraries/error_codes.h"
|
||||
#include "core/libraries/libs.h"
|
||||
#include "core/libraries/network/http2.h"
|
||||
|
||||
namespace Libraries::Http2 {
|
||||
|
||||
int PS4_SYSV_ABI _Z5dummyv() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2AbortRequest() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2AddCookie() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2AddRequestHeader() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2AuthCacheFlush() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2CookieExport() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2CookieFlush() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2CookieImport() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2CreateCookieBox() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2CreateRequestWithURL() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2CreateTemplate() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2DeleteCookieBox() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2DeleteRequest() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2DeleteTemplate() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetAllResponseHeaders() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetAuthEnabled() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetAutoRedirect() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetCookie() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetCookieBox() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetCookieStats() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetMemoryPoolStats() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetResponseContentLength() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2GetStatusCode() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2Init(int net_id, int ssl_id, size_t pool_size, int max_requests) {
|
||||
LOG_ERROR(Lib_Http2, "(DUMMY) called");
|
||||
static int id = 0;
|
||||
return ++id;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2ReadData() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2ReadDataAsync() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2RedirectCacheFlush() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2RemoveRequestHeader() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SendRequest() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SendRequestAsync() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetAuthEnabled() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetAuthInfoCallback() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetAutoRedirect() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetConnectionWaitTimeOut() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetConnectTimeOut() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieBox() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieMaxNum() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieMaxNumPerDomain() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieMaxSize() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieRecvCallback() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieSendCallback() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetInflateGZIPEnabled() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetMinSslVersion() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetPreSendCallback() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetRecvTimeOut() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetRedirectCallback() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetRequestContentLength() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetResolveRetry() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetResolveTimeOut() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetSendTimeOut() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetSslCallback() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SetTimeOut() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SslDisableOption() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2SslEnableOption() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2Term() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceHttp2WaitAsync() {
|
||||
LOG_ERROR(Lib_Http2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
void RegisterlibSceHttp2(Core::Loader::SymbolsResolver* sym) {
|
||||
LIB_FUNCTION("AS45QoYHjc4", "libSceHttp2", 1, "libSceHttp2", 1, 1, _Z5dummyv);
|
||||
LIB_FUNCTION("IZ-qjhRqvjk", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2AbortRequest);
|
||||
LIB_FUNCTION("flPxnowtvWY", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2AddCookie);
|
||||
LIB_FUNCTION("nrPfOE8TQu0", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2AddRequestHeader);
|
||||
LIB_FUNCTION("WeuDjj5m4YU", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2AuthCacheFlush);
|
||||
LIB_FUNCTION("JlFGR4v50Kw", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2CookieExport);
|
||||
LIB_FUNCTION("5VlQSzXW-SQ", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2CookieFlush);
|
||||
LIB_FUNCTION("B5ibZI5UlzU", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2CookieImport);
|
||||
LIB_FUNCTION("N4UfjvWJsMw", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2CreateCookieBox);
|
||||
LIB_FUNCTION("mmyOCxQMVYQ", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2CreateRequestWithURL);
|
||||
LIB_FUNCTION("+wCt7fCijgk", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2CreateTemplate);
|
||||
LIB_FUNCTION("O9ync3F-JVI", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2DeleteCookieBox);
|
||||
LIB_FUNCTION("c8D9qIjo8EY", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2DeleteRequest);
|
||||
LIB_FUNCTION("pDom5-078DA", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2DeleteTemplate);
|
||||
LIB_FUNCTION("-rdXUi2XW90", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2GetAllResponseHeaders);
|
||||
LIB_FUNCTION("m-OL13q8AI8", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2GetAuthEnabled);
|
||||
LIB_FUNCTION("od5QCZhZSfw", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2GetAutoRedirect);
|
||||
LIB_FUNCTION("GQFGj0rYX+A", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2GetCookie);
|
||||
LIB_FUNCTION("IX23slKvtQI", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2GetCookieBox);
|
||||
LIB_FUNCTION("eij7UzkUqK8", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2GetCookieStats);
|
||||
LIB_FUNCTION("otUQuZa-mv0", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2GetMemoryPoolStats);
|
||||
LIB_FUNCTION("o0DBQpFE13o", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2GetResponseContentLength);
|
||||
LIB_FUNCTION("9XYJwCf3lEA", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2GetStatusCode);
|
||||
LIB_FUNCTION("3JCe3lCbQ8A", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2Init);
|
||||
LIB_FUNCTION("QygCNNmbGss", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2ReadData);
|
||||
LIB_FUNCTION("bGN-6zbo7ms", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2ReadDataAsync);
|
||||
LIB_FUNCTION("klwUy2Wg+q8", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2RedirectCacheFlush);
|
||||
LIB_FUNCTION("jHdP0CS4ZlA", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2RemoveRequestHeader);
|
||||
LIB_FUNCTION("rbqZig38AT8", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SendRequest);
|
||||
LIB_FUNCTION("A+NVAFu4eCg", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SendRequestAsync);
|
||||
LIB_FUNCTION("jjFahkBPCYs", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetAuthEnabled);
|
||||
LIB_FUNCTION("Wwj6HbB2mOo", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetAuthInfoCallback);
|
||||
LIB_FUNCTION("b9AvoIaOuHI", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetAutoRedirect);
|
||||
LIB_FUNCTION("n8hMLe31OPA", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2SetConnectionWaitTimeOut);
|
||||
LIB_FUNCTION("-HIO4VT87v8", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetConnectTimeOut);
|
||||
LIB_FUNCTION("jrVHsKCXA0g", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetCookieBox);
|
||||
LIB_FUNCTION("mPKVhQqh2Es", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetCookieMaxNum);
|
||||
LIB_FUNCTION("o7+WXe4WadE", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2SetCookieMaxNumPerDomain);
|
||||
LIB_FUNCTION("6a0N6GPD7RM", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetCookieMaxSize);
|
||||
LIB_FUNCTION("zdtXKn9X7no", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2SetCookieRecvCallback);
|
||||
LIB_FUNCTION("McYmUpQ3-DY", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2SetCookieSendCallback);
|
||||
LIB_FUNCTION("uRosf8GQbHQ", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2SetInflateGZIPEnabled);
|
||||
LIB_FUNCTION("09tk+kIA1Ns", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetMinSslVersion);
|
||||
LIB_FUNCTION("UL4Fviw+IAM", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetPreSendCallback);
|
||||
LIB_FUNCTION("izvHhqgDt44", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetRecvTimeOut);
|
||||
LIB_FUNCTION("BJgi0CH7al4", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetRedirectCallback);
|
||||
LIB_FUNCTION("FSAFOzi0FpM", "libSceHttp2", 1, "libSceHttp2", 1, 1,
|
||||
sceHttp2SetRequestContentLength);
|
||||
LIB_FUNCTION("Gcjh+CisAZM", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetResolveRetry);
|
||||
LIB_FUNCTION("ACjtE27aErY", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetResolveTimeOut);
|
||||
LIB_FUNCTION("XPtW45xiLHk", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetSendTimeOut);
|
||||
LIB_FUNCTION("YrWX+DhPHQY", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetSslCallback);
|
||||
LIB_FUNCTION("VYMxTcBqSE0", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SetTimeOut);
|
||||
LIB_FUNCTION("B37SruheQ5Y", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SslDisableOption);
|
||||
LIB_FUNCTION("EWcwMpbr5F8", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2SslEnableOption);
|
||||
LIB_FUNCTION("YiBUtz-pGkc", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2Term);
|
||||
LIB_FUNCTION("MOp-AUhdfi8", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2WaitAsync);
|
||||
};
|
||||
|
||||
} // namespace Libraries::Http2
|
72
src/core/libraries/network/http2.h
Normal file
72
src/core/libraries/network/http2.h
Normal file
|
@ -0,0 +1,72 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Core::Loader {
|
||||
class SymbolsResolver;
|
||||
}
|
||||
|
||||
namespace Libraries::Http2 {
|
||||
|
||||
int PS4_SYSV_ABI _Z5dummyv();
|
||||
int PS4_SYSV_ABI sceHttp2AbortRequest();
|
||||
int PS4_SYSV_ABI sceHttp2AddCookie();
|
||||
int PS4_SYSV_ABI sceHttp2AddRequestHeader();
|
||||
int PS4_SYSV_ABI sceHttp2AuthCacheFlush();
|
||||
int PS4_SYSV_ABI sceHttp2CookieExport();
|
||||
int PS4_SYSV_ABI sceHttp2CookieFlush();
|
||||
int PS4_SYSV_ABI sceHttp2CookieImport();
|
||||
int PS4_SYSV_ABI sceHttp2CreateCookieBox();
|
||||
int PS4_SYSV_ABI sceHttp2CreateRequestWithURL();
|
||||
int PS4_SYSV_ABI sceHttp2CreateTemplate();
|
||||
int PS4_SYSV_ABI sceHttp2DeleteCookieBox();
|
||||
int PS4_SYSV_ABI sceHttp2DeleteRequest();
|
||||
int PS4_SYSV_ABI sceHttp2DeleteTemplate();
|
||||
int PS4_SYSV_ABI sceHttp2GetAllResponseHeaders();
|
||||
int PS4_SYSV_ABI sceHttp2GetAuthEnabled();
|
||||
int PS4_SYSV_ABI sceHttp2GetAutoRedirect();
|
||||
int PS4_SYSV_ABI sceHttp2GetCookie();
|
||||
int PS4_SYSV_ABI sceHttp2GetCookieBox();
|
||||
int PS4_SYSV_ABI sceHttp2GetCookieStats();
|
||||
int PS4_SYSV_ABI sceHttp2GetMemoryPoolStats();
|
||||
int PS4_SYSV_ABI sceHttp2GetResponseContentLength();
|
||||
int PS4_SYSV_ABI sceHttp2GetStatusCode();
|
||||
int PS4_SYSV_ABI sceHttp2Init(int net_id, int ssl_id, size_t pool_size, int max_requests);
|
||||
int PS4_SYSV_ABI sceHttp2ReadData();
|
||||
int PS4_SYSV_ABI sceHttp2ReadDataAsync();
|
||||
int PS4_SYSV_ABI sceHttp2RedirectCacheFlush();
|
||||
int PS4_SYSV_ABI sceHttp2RemoveRequestHeader();
|
||||
int PS4_SYSV_ABI sceHttp2SendRequest();
|
||||
int PS4_SYSV_ABI sceHttp2SendRequestAsync();
|
||||
int PS4_SYSV_ABI sceHttp2SetAuthEnabled();
|
||||
int PS4_SYSV_ABI sceHttp2SetAuthInfoCallback();
|
||||
int PS4_SYSV_ABI sceHttp2SetAutoRedirect();
|
||||
int PS4_SYSV_ABI sceHttp2SetConnectionWaitTimeOut();
|
||||
int PS4_SYSV_ABI sceHttp2SetConnectTimeOut();
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieBox();
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieMaxNum();
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieMaxNumPerDomain();
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieMaxSize();
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieRecvCallback();
|
||||
int PS4_SYSV_ABI sceHttp2SetCookieSendCallback();
|
||||
int PS4_SYSV_ABI sceHttp2SetInflateGZIPEnabled();
|
||||
int PS4_SYSV_ABI sceHttp2SetMinSslVersion();
|
||||
int PS4_SYSV_ABI sceHttp2SetPreSendCallback();
|
||||
int PS4_SYSV_ABI sceHttp2SetRecvTimeOut();
|
||||
int PS4_SYSV_ABI sceHttp2SetRedirectCallback();
|
||||
int PS4_SYSV_ABI sceHttp2SetRequestContentLength();
|
||||
int PS4_SYSV_ABI sceHttp2SetResolveRetry();
|
||||
int PS4_SYSV_ABI sceHttp2SetResolveTimeOut();
|
||||
int PS4_SYSV_ABI sceHttp2SetSendTimeOut();
|
||||
int PS4_SYSV_ABI sceHttp2SetSslCallback();
|
||||
int PS4_SYSV_ABI sceHttp2SetTimeOut();
|
||||
int PS4_SYSV_ABI sceHttp2SslDisableOption();
|
||||
int PS4_SYSV_ABI sceHttp2SslEnableOption();
|
||||
int PS4_SYSV_ABI sceHttp2Term();
|
||||
int PS4_SYSV_ABI sceHttp2WaitAsync();
|
||||
|
||||
void RegisterlibSceHttp2(Core::Loader::SymbolsResolver* sym);
|
||||
} // namespace Libraries::Http2
|
353
src/core/libraries/network/ssl2.cpp
Normal file
353
src/core/libraries/network/ssl2.cpp
Normal file
|
@ -0,0 +1,353 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "common/logging/log.h"
|
||||
#include "core/libraries/error_codes.h"
|
||||
#include "core/libraries/libs.h"
|
||||
#include "core/libraries/network/ssl2.h"
|
||||
|
||||
namespace Libraries::Ssl2 {
|
||||
|
||||
int PS4_SYSV_ABI CA_MGMT_extractKeyBlobEx() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI CA_MGMT_extractPublicKeyInfo() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI CA_MGMT_freeKeyBlob() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI CRYPTO_initAsymmetricKey() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI CRYPTO_uninitAsymmetricKey() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI RSA_verifySignature() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslCheckRecvPending() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslClose() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslConnect() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslCreateConnection() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslCreateSslConnection() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslDeleteConnection() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslDeleteSslConnection() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslDisableOption() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslDisableOptionInternal() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslDisableOptionInternalInsecure() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslDisableVerifyOption() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslEnableOption() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslEnableOptionInternal() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslEnableVerifyOption() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslFreeCaCerts() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslFreeCaList() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslFreeSslCertName() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetAlpnSelected() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetCaCerts() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetCaList() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetFingerprint() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetIssuerName() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetMemoryPoolStats() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetNameEntryCount() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetNameEntryInfo() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetNanoSSLModuleId() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetNotAfter() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetNotBefore() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetPeerCert() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetPem() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetSerialNumber() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetSslError() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslGetSubjectName() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslInit(std::size_t poolSize) {
|
||||
LOG_ERROR(Lib_Ssl2, "(DUMMY) called poolSize = {}", poolSize);
|
||||
// return a value >1
|
||||
static int id = 0;
|
||||
return ++id;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslLoadCert() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslLoadRootCACert() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslRead() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslRecv() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslReuseConnection() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslSend() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslSetAlpn() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslSetMinSslVersion() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslSetSslVersion() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslSetVerifyCallback() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslTerm() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslUnloadCert() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceSslWrite() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI VLONG_freeVlongQueue() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI Func_22E76E60BC0587D7() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI Func_28F8791A771D39C7() {
|
||||
LOG_ERROR(Lib_Ssl2, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
void RegisterlibSceSsl2(Core::Loader::SymbolsResolver* sym) {
|
||||
LIB_FUNCTION("Md+HYkCBZB4", "libSceSsl", 1, "libSceSsl", 2, 1, CA_MGMT_extractKeyBlobEx);
|
||||
LIB_FUNCTION("9bKYzKP6kYU", "libSceSsl", 1, "libSceSsl", 2, 1, CA_MGMT_extractPublicKeyInfo);
|
||||
LIB_FUNCTION("ipLIammTj2Q", "libSceSsl", 1, "libSceSsl", 2, 1, CA_MGMT_freeKeyBlob);
|
||||
LIB_FUNCTION("PRWr3-ytpdg", "libSceSsl", 1, "libSceSsl", 2, 1, CRYPTO_initAsymmetricKey);
|
||||
LIB_FUNCTION("cW7VCIMCh9A", "libSceSsl", 1, "libSceSsl", 2, 1, CRYPTO_uninitAsymmetricKey);
|
||||
LIB_FUNCTION("pBwtarKd7eg", "libSceSsl", 1, "libSceSsl", 2, 1, RSA_verifySignature);
|
||||
LIB_FUNCTION("1VM0h1JrUfA", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslCheckRecvPending);
|
||||
LIB_FUNCTION("viRXSHZYd0c", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslClose);
|
||||
LIB_FUNCTION("zXvd6iNyfgc", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslConnect);
|
||||
LIB_FUNCTION("tuscfitnhEo", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslCreateConnection);
|
||||
LIB_FUNCTION("P14ATpXc4J8", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslCreateSslConnection);
|
||||
LIB_FUNCTION("HJ1n138CQ2g", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslDeleteConnection);
|
||||
LIB_FUNCTION("hwrHV6Pprk4", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslDeleteSslConnection);
|
||||
LIB_FUNCTION("iLKz4+ukLqk", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslDisableOption);
|
||||
LIB_FUNCTION("-WqxBRAUVM4", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslDisableOptionInternal);
|
||||
LIB_FUNCTION("w1+L-27nYas", "libSceSsl", 1, "libSceSsl", 2, 1,
|
||||
sceSslDisableOptionInternalInsecure);
|
||||
LIB_FUNCTION("PwsHbErG+e8", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslDisableVerifyOption);
|
||||
LIB_FUNCTION("m-zPyAsIpco", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslEnableOption);
|
||||
LIB_FUNCTION("g-zCwUKstEQ", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslEnableOptionInternal);
|
||||
LIB_FUNCTION("po1X86mgHDU", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslEnableVerifyOption);
|
||||
LIB_FUNCTION("qIvLs0gYxi0", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslFreeCaCerts);
|
||||
LIB_FUNCTION("+DzXseDVkeI", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslFreeCaList);
|
||||
LIB_FUNCTION("RwXD8grHZHM", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslFreeSslCertName);
|
||||
LIB_FUNCTION("4O7+bRkRUe8", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetAlpnSelected);
|
||||
LIB_FUNCTION("TDfQqO-gMbY", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetCaCerts);
|
||||
LIB_FUNCTION("qOn+wm28wmA", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetCaList);
|
||||
LIB_FUNCTION("brRtwGBu4A8", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetFingerprint);
|
||||
LIB_FUNCTION("7whYpYfHP74", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetIssuerName);
|
||||
LIB_FUNCTION("-PoIzr3PEk0", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetMemoryPoolStats);
|
||||
LIB_FUNCTION("R1ePzopYPYM", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetNameEntryCount);
|
||||
LIB_FUNCTION("7RBSTKGrmDA", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetNameEntryInfo);
|
||||
LIB_FUNCTION("AzUipl-DpIw", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetNanoSSLModuleId);
|
||||
LIB_FUNCTION("xHpt6+2pGYk", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetNotAfter);
|
||||
LIB_FUNCTION("Eo0S65Jy28Q", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetNotBefore);
|
||||
LIB_FUNCTION("-TbZc8pwPNc", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetPeerCert);
|
||||
LIB_FUNCTION("kLB5aGoUJXg", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetPem);
|
||||
LIB_FUNCTION("DOwXL+FQMEY", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetSerialNumber);
|
||||
LIB_FUNCTION("0XcZknp7-Wc", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetSslError);
|
||||
LIB_FUNCTION("dQReuBX9sD8", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslGetSubjectName);
|
||||
LIB_FUNCTION("hdpVEUDFW3s", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslInit);
|
||||
LIB_FUNCTION("Ab7+DH+gYyM", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslLoadCert);
|
||||
LIB_FUNCTION("3-643mGVFJo", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslLoadRootCACert);
|
||||
LIB_FUNCTION("jltWpVKtetg", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslRead);
|
||||
LIB_FUNCTION("hi0veU3L2pU", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslRecv);
|
||||
LIB_FUNCTION("50R2xYaYZwE", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslReuseConnection);
|
||||
LIB_FUNCTION("p5bM5PPufFY", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslSend);
|
||||
LIB_FUNCTION("TL86glUrmUw", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslSetAlpn);
|
||||
LIB_FUNCTION("QWSxBzf6lAg", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslSetMinSslVersion);
|
||||
LIB_FUNCTION("bKaEtQnoUuQ", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslSetSslVersion);
|
||||
LIB_FUNCTION("E4a-ahM57QQ", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslSetVerifyCallback);
|
||||
LIB_FUNCTION("0K1yQ6Lv-Yc", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslTerm);
|
||||
LIB_FUNCTION("UQ+3Qu7v3cA", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslUnloadCert);
|
||||
LIB_FUNCTION("iNjkt9Poblw", "libSceSsl", 1, "libSceSsl", 2, 1, sceSslWrite);
|
||||
LIB_FUNCTION("wcVuyTUr5ys", "libSceSsl", 1, "libSceSsl", 2, 1, VLONG_freeVlongQueue);
|
||||
LIB_FUNCTION("IuduYLwFh9c", "libSceSsl", 1, "libSceSsl", 2, 1, Func_22E76E60BC0587D7);
|
||||
LIB_FUNCTION("KPh5GncdOcc", "libSceSsl", 1, "libSceSsl", 2, 1, Func_28F8791A771D39C7);
|
||||
};
|
||||
|
||||
} // namespace Libraries::Ssl2
|
14
src/core/libraries/network/ssl2.h
Normal file
14
src/core/libraries/network/ssl2.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Core::Loader {
|
||||
class SymbolsResolver;
|
||||
}
|
||||
|
||||
namespace Libraries::Ssl2 {
|
||||
void RegisterlibSceSsl2(Core::Loader::SymbolsResolver* sym);
|
||||
} // namespace Libraries::Ssl2
|
692
src/core/libraries/np_web_api/np_web_api.cpp
Normal file
692
src/core/libraries/np_web_api/np_web_api.cpp
Normal file
|
@ -0,0 +1,692 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "common/logging/log.h"
|
||||
#include "core/libraries/error_codes.h"
|
||||
#include "core/libraries/libs.h"
|
||||
#include "core/libraries/np_web_api/np_web_api.h"
|
||||
|
||||
namespace Libraries::NpWebApi {
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateContext() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreatePushEventFilter() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateServicePushEventFilter() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeletePushEventFilter() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteServicePushEventFilter() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterExtdPushEventCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterNotificationCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterPushEventCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterServicePushEventCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUnregisterNotificationCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUnregisterPushEventCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUnregisterServicePushEventCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiAbortHandle() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiAbortRequest() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiAddHttpRequestHeader() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiAddMultipartPart() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCheckTimeout() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiClearAllUnusedConnection() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiClearUnusedConnection() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateContextA() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateExtdPushEventFilter() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateHandle() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateMultipartRequest() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateRequest() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteContext() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteExtdPushEventFilter() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteHandle() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteRequest() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetConnectionStats() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetErrorCode() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetHttpResponseHeaderValue() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetHttpResponseHeaderValueLength() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetHttpStatusCode() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetMemoryPoolStats() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiInitialize() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(DUMMY) called");
|
||||
static s32 id = 0;
|
||||
return ++id;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiInitializeForPresence() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntCreateCtxIndExtdPushEventFilter() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntCreateRequest() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntCreateServicePushEventFilter() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntInitialize() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntRegisterServicePushEventCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntRegisterServicePushEventCallbackA() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiReadData() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterExtdPushEventCallbackA() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSendMultipartRequest() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSendMultipartRequest2() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSendRequest() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSendRequest2() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSetHandleTimeout() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSetMaxConnection() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSetMultipartContentType() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSetRequestTimeout() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiTerminate() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUnregisterExtdPushEventCallback() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUtilityParseNpId() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiVshInitialize() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_064C4ED1EDBEB9E8() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_0783955D4E9563DA() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_1A6D77F3FD8323A8() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_1E0693A26FE0F954() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_24A9B5F1D77000CF() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_24AAA6F50E4C2361() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_24D8853D6B47FC79() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_279B3E9C7C4A9DC5() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_28461E29E9F8D697() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_3C29624704FAB9E0() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_3F027804ED2EC11E() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_4066C94E782997CD() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_47C85356815DBE90() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_4FCE8065437E3B87() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_536280BE3DABB521() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_57A0E1BC724219F3() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_5819749C040B6637() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_6198D0C825E86319() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_61F2B9E8AB093743() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_6BC388E6113F0D44() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_7500F0C4F8DC2D16() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_75A03814C7E9039F() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_789D6026C521416E() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_7DED63D06399EFFF() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_7E55A2DCC03D395A() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_7E6C8F9FB86967F4() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_7F04B7D4A7D41E80() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_8E167252DFA5C957() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_95D0046E504E3B09() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_97284BFDA4F18FDF() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_99E32C1F4737EAB4() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_9CFF661EA0BCBF83() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_9EB0E1F467AC3B29() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_A2318FE6FBABFAA3() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_BA07A2E1BF7B3971() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_BD0803EEE0CC29A0() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_BE6F4E5524BB135F() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_C0D490EB481EA4D0() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_C175D392CA6D084A() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_CD0136AF165D2F2F() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_D1C0ADB7B52FEAB5() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_E324765D18EE4D12() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_E789F980D907B653() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI Func_F9A32E8685627436() {
|
||||
LOG_ERROR(Lib_NpWebApi, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
void RegisterlibSceNpWebApi(Core::Loader::SymbolsResolver* sym) {
|
||||
LIB_FUNCTION("x1Y7yiYSk7c", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateContext);
|
||||
LIB_FUNCTION("y5Ta5JCzQHY", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreatePushEventFilter);
|
||||
LIB_FUNCTION("sIFx734+xys", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateServicePushEventFilter);
|
||||
LIB_FUNCTION("zE+R6Rcx3W0", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiDeletePushEventFilter);
|
||||
LIB_FUNCTION("PfQ+f6ws764", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiDeleteServicePushEventFilter);
|
||||
LIB_FUNCTION("vrM02A5Gy1M", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterExtdPushEventCallback);
|
||||
LIB_FUNCTION("HVgWmGIOKdk", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterNotificationCallback);
|
||||
LIB_FUNCTION("PfSTDCgNMgc", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterPushEventCallback);
|
||||
LIB_FUNCTION("kJQJE0uKm5w", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterServicePushEventCallback);
|
||||
LIB_FUNCTION("wjYEvo4xbcA", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiUnregisterNotificationCallback);
|
||||
LIB_FUNCTION("qK4o2656W4w", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiUnregisterPushEventCallback);
|
||||
LIB_FUNCTION("2edrkr0c-wg", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiUnregisterServicePushEventCallback);
|
||||
LIB_FUNCTION("WKcm4PeyJww", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiAbortHandle);
|
||||
LIB_FUNCTION("JzhYTP2fG18", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiAbortRequest);
|
||||
LIB_FUNCTION("joRjtRXTFoc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiAddHttpRequestHeader);
|
||||
LIB_FUNCTION("19KgfJXgM+U", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiAddMultipartPart);
|
||||
LIB_FUNCTION("gVNNyxf-1Sg", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCheckTimeout);
|
||||
LIB_FUNCTION("KQIkDGf80PQ", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiClearAllUnusedConnection);
|
||||
LIB_FUNCTION("f-pgaNSd1zc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiClearUnusedConnection);
|
||||
LIB_FUNCTION("x1Y7yiYSk7c", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateContext);
|
||||
LIB_FUNCTION("zk6c65xoyO0", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateContextA);
|
||||
LIB_FUNCTION("M2BUB+DNEGE", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateExtdPushEventFilter);
|
||||
LIB_FUNCTION("79M-JqvvGo0", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateHandle);
|
||||
LIB_FUNCTION("KBxgeNpoRIQ", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateMultipartRequest);
|
||||
LIB_FUNCTION("y5Ta5JCzQHY", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreatePushEventFilter);
|
||||
LIB_FUNCTION("rdgs5Z1MyFw", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateRequest);
|
||||
LIB_FUNCTION("sIFx734+xys", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiCreateServicePushEventFilter);
|
||||
LIB_FUNCTION("XUjdsSTTZ3U", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiDeleteContext);
|
||||
LIB_FUNCTION("pfaJtb7SQ80", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiDeleteExtdPushEventFilter);
|
||||
LIB_FUNCTION("5Mn7TYwpl30", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiDeleteHandle);
|
||||
LIB_FUNCTION("zE+R6Rcx3W0", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiDeletePushEventFilter);
|
||||
LIB_FUNCTION("noQgleu+KLE", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiDeleteRequest);
|
||||
LIB_FUNCTION("PfQ+f6ws764", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiDeleteServicePushEventFilter);
|
||||
LIB_FUNCTION("UJ8H+7kVQUE", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiGetConnectionStats);
|
||||
LIB_FUNCTION("2qSZ0DgwTsc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiGetErrorCode);
|
||||
LIB_FUNCTION("VwJ5L0Higg0", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiGetHttpResponseHeaderValue);
|
||||
LIB_FUNCTION("743ZzEBzlV8", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiGetHttpResponseHeaderValueLength);
|
||||
LIB_FUNCTION("k210oKgP80Y", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiGetHttpStatusCode);
|
||||
LIB_FUNCTION("3OnubUs02UM", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiGetMemoryPoolStats);
|
||||
LIB_FUNCTION("G3AnLNdRBjE", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, sceNpWebApiInitialize);
|
||||
LIB_FUNCTION("FkuwsD64zoQ", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiInitializeForPresence);
|
||||
LIB_FUNCTION("c1pKoztonB8", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiIntCreateCtxIndExtdPushEventFilter);
|
||||
LIB_FUNCTION("N2Jbx4tIaQ4", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiIntCreateRequest);
|
||||
LIB_FUNCTION("TZSep4xB4EY", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiIntCreateServicePushEventFilter);
|
||||
LIB_FUNCTION("8Vjplhyyc44", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiIntInitialize);
|
||||
LIB_FUNCTION("VjVukb2EWPc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiIntRegisterServicePushEventCallback);
|
||||
LIB_FUNCTION("sfq23ZVHVEw", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiIntRegisterServicePushEventCallbackA);
|
||||
LIB_FUNCTION("CQtPRSF6Ds8", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, sceNpWebApiReadData);
|
||||
LIB_FUNCTION("vrM02A5Gy1M", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterExtdPushEventCallback);
|
||||
LIB_FUNCTION("jhXKGQJ4egI", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterExtdPushEventCallbackA);
|
||||
LIB_FUNCTION("HVgWmGIOKdk", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterNotificationCallback);
|
||||
LIB_FUNCTION("PfSTDCgNMgc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterPushEventCallback);
|
||||
LIB_FUNCTION("kJQJE0uKm5w", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiRegisterServicePushEventCallback);
|
||||
LIB_FUNCTION("KCItz6QkeGs", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiSendMultipartRequest);
|
||||
LIB_FUNCTION("DsPOTEvSe7M", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiSendMultipartRequest2);
|
||||
LIB_FUNCTION("kVbL4hL3K7w", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiSendRequest);
|
||||
LIB_FUNCTION("KjNeZ-29ysQ", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiSendRequest2);
|
||||
LIB_FUNCTION("6g6q-g1i4XU", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiSetHandleTimeout);
|
||||
LIB_FUNCTION("gRiilVCvfAI", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiSetMaxConnection);
|
||||
LIB_FUNCTION("i0dr6grIZyc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiSetMultipartContentType);
|
||||
LIB_FUNCTION("qWcbJkBj1Lg", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiSetRequestTimeout);
|
||||
LIB_FUNCTION("asz3TtIqGF8", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, sceNpWebApiTerminate);
|
||||
LIB_FUNCTION("PqCY25FMzPs", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiUnregisterExtdPushEventCallback);
|
||||
LIB_FUNCTION("wjYEvo4xbcA", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiUnregisterNotificationCallback);
|
||||
LIB_FUNCTION("qK4o2656W4w", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiUnregisterPushEventCallback);
|
||||
LIB_FUNCTION("2edrkr0c-wg", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiUnregisterServicePushEventCallback);
|
||||
LIB_FUNCTION("or0e885BlXo", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiUtilityParseNpId);
|
||||
LIB_FUNCTION("uRsskUhAfnM", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1,
|
||||
sceNpWebApiVshInitialize);
|
||||
LIB_FUNCTION("BkxO0e2+ueg", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_064C4ED1EDBEB9E8);
|
||||
LIB_FUNCTION("B4OVXU6VY9o", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_0783955D4E9563DA);
|
||||
LIB_FUNCTION("Gm138-2DI6g", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_1A6D77F3FD8323A8);
|
||||
LIB_FUNCTION("HgaTom-g+VQ", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_1E0693A26FE0F954);
|
||||
LIB_FUNCTION("JKm18ddwAM8", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_24A9B5F1D77000CF);
|
||||
LIB_FUNCTION("JKqm9Q5MI2E", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_24AAA6F50E4C2361);
|
||||
LIB_FUNCTION("JNiFPWtH-Hk", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_24D8853D6B47FC79);
|
||||
LIB_FUNCTION("J5s+nHxKncU", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_279B3E9C7C4A9DC5);
|
||||
LIB_FUNCTION("KEYeKen41pc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_28461E29E9F8D697);
|
||||
LIB_FUNCTION("PCliRwT6ueA", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_3C29624704FAB9E0);
|
||||
LIB_FUNCTION("PwJ4BO0uwR4", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_3F027804ED2EC11E);
|
||||
LIB_FUNCTION("QGbJTngpl80", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_4066C94E782997CD);
|
||||
LIB_FUNCTION("R8hTVoFdvpA", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_47C85356815DBE90);
|
||||
LIB_FUNCTION("T86AZUN+O4c", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_4FCE8065437E3B87);
|
||||
LIB_FUNCTION("U2KAvj2rtSE", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_536280BE3DABB521);
|
||||
LIB_FUNCTION("V6DhvHJCGfM", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_57A0E1BC724219F3);
|
||||
LIB_FUNCTION("WBl0nAQLZjc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_5819749C040B6637);
|
||||
LIB_FUNCTION("YZjQyCXoYxk", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_6198D0C825E86319);
|
||||
LIB_FUNCTION("YfK56KsJN0M", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_61F2B9E8AB093743);
|
||||
LIB_FUNCTION("a8OI5hE-DUQ", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_6BC388E6113F0D44);
|
||||
LIB_FUNCTION("dQDwxPjcLRY", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_7500F0C4F8DC2D16);
|
||||
LIB_FUNCTION("daA4FMfpA58", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_75A03814C7E9039F);
|
||||
LIB_FUNCTION("eJ1gJsUhQW4", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_789D6026C521416E);
|
||||
LIB_FUNCTION("fe1j0GOZ7-8", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_7DED63D06399EFFF);
|
||||
LIB_FUNCTION("flWi3MA9OVo", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_7E55A2DCC03D395A);
|
||||
LIB_FUNCTION("fmyPn7hpZ-Q", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_7E6C8F9FB86967F4);
|
||||
LIB_FUNCTION("fwS31KfUHoA", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_7F04B7D4A7D41E80);
|
||||
LIB_FUNCTION("jhZyUt+lyVc", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_8E167252DFA5C957);
|
||||
LIB_FUNCTION("ldAEblBOOwk", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_95D0046E504E3B09);
|
||||
LIB_FUNCTION("lyhL-aTxj98", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_97284BFDA4F18FDF);
|
||||
LIB_FUNCTION("meMsH0c36rQ", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_99E32C1F4737EAB4);
|
||||
LIB_FUNCTION("nP9mHqC8v4M", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_9CFF661EA0BCBF83);
|
||||
LIB_FUNCTION("nrDh9GesOyk", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_9EB0E1F467AC3B29);
|
||||
LIB_FUNCTION("ojGP5vur+qM", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_A2318FE6FBABFAA3);
|
||||
LIB_FUNCTION("ugei4b97OXE", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_BA07A2E1BF7B3971);
|
||||
LIB_FUNCTION("vQgD7uDMKaA", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_BD0803EEE0CC29A0);
|
||||
LIB_FUNCTION("vm9OVSS7E18", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_BE6F4E5524BB135F);
|
||||
LIB_FUNCTION("wNSQ60gepNA", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_C0D490EB481EA4D0);
|
||||
LIB_FUNCTION("wXXTksptCEo", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_C175D392CA6D084A);
|
||||
LIB_FUNCTION("zQE2rxZdLy8", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_CD0136AF165D2F2F);
|
||||
LIB_FUNCTION("0cCtt7Uv6rU", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_D1C0ADB7B52FEAB5);
|
||||
LIB_FUNCTION("4yR2XRjuTRI", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_E324765D18EE4D12);
|
||||
LIB_FUNCTION("54n5gNkHtlM", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_E789F980D907B653);
|
||||
LIB_FUNCTION("+aMuhoVidDY", "libSceNpWebApi", 1, "libSceNpWebApi", 1, 1, Func_F9A32E8685627436);
|
||||
};
|
||||
|
||||
} // namespace Libraries::NpWebApi
|
116
src/core/libraries/np_web_api/np_web_api.h
Normal file
116
src/core/libraries/np_web_api/np_web_api.h
Normal file
|
@ -0,0 +1,116 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Core::Loader {
|
||||
class SymbolsResolver;
|
||||
}
|
||||
|
||||
namespace Libraries::NpWebApi {
|
||||
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateContext();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreatePushEventFilter();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateServicePushEventFilter();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeletePushEventFilter();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteServicePushEventFilter();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterExtdPushEventCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterNotificationCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterPushEventCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterServicePushEventCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUnregisterNotificationCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUnregisterPushEventCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUnregisterServicePushEventCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiAbortHandle();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiAbortRequest();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiAddHttpRequestHeader();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiAddMultipartPart();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCheckTimeout();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiClearAllUnusedConnection();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiClearUnusedConnection();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateContextA();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateExtdPushEventFilter();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateHandle();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateMultipartRequest();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiCreateRequest();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteContext();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteExtdPushEventFilter();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteHandle();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiDeleteRequest();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetConnectionStats();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetErrorCode();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetHttpResponseHeaderValue();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetHttpResponseHeaderValueLength();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetHttpStatusCode();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiGetMemoryPoolStats();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiInitialize();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiInitializeForPresence();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntCreateCtxIndExtdPushEventFilter();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntCreateRequest();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntCreateServicePushEventFilter();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntInitialize();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntRegisterServicePushEventCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiIntRegisterServicePushEventCallbackA();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiReadData();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiRegisterExtdPushEventCallbackA();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSendMultipartRequest();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSendMultipartRequest2();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSendRequest();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSendRequest2();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSetHandleTimeout();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSetMaxConnection();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSetMultipartContentType();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiSetRequestTimeout();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiTerminate();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUnregisterExtdPushEventCallback();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiUtilityParseNpId();
|
||||
s32 PS4_SYSV_ABI sceNpWebApiVshInitialize();
|
||||
s32 PS4_SYSV_ABI Func_064C4ED1EDBEB9E8();
|
||||
s32 PS4_SYSV_ABI Func_0783955D4E9563DA();
|
||||
s32 PS4_SYSV_ABI Func_1A6D77F3FD8323A8();
|
||||
s32 PS4_SYSV_ABI Func_1E0693A26FE0F954();
|
||||
s32 PS4_SYSV_ABI Func_24A9B5F1D77000CF();
|
||||
s32 PS4_SYSV_ABI Func_24AAA6F50E4C2361();
|
||||
s32 PS4_SYSV_ABI Func_24D8853D6B47FC79();
|
||||
s32 PS4_SYSV_ABI Func_279B3E9C7C4A9DC5();
|
||||
s32 PS4_SYSV_ABI Func_28461E29E9F8D697();
|
||||
s32 PS4_SYSV_ABI Func_3C29624704FAB9E0();
|
||||
s32 PS4_SYSV_ABI Func_3F027804ED2EC11E();
|
||||
s32 PS4_SYSV_ABI Func_4066C94E782997CD();
|
||||
s32 PS4_SYSV_ABI Func_47C85356815DBE90();
|
||||
s32 PS4_SYSV_ABI Func_4FCE8065437E3B87();
|
||||
s32 PS4_SYSV_ABI Func_536280BE3DABB521();
|
||||
s32 PS4_SYSV_ABI Func_57A0E1BC724219F3();
|
||||
s32 PS4_SYSV_ABI Func_5819749C040B6637();
|
||||
s32 PS4_SYSV_ABI Func_6198D0C825E86319();
|
||||
s32 PS4_SYSV_ABI Func_61F2B9E8AB093743();
|
||||
s32 PS4_SYSV_ABI Func_6BC388E6113F0D44();
|
||||
s32 PS4_SYSV_ABI Func_7500F0C4F8DC2D16();
|
||||
s32 PS4_SYSV_ABI Func_75A03814C7E9039F();
|
||||
s32 PS4_SYSV_ABI Func_789D6026C521416E();
|
||||
s32 PS4_SYSV_ABI Func_7DED63D06399EFFF();
|
||||
s32 PS4_SYSV_ABI Func_7E55A2DCC03D395A();
|
||||
s32 PS4_SYSV_ABI Func_7E6C8F9FB86967F4();
|
||||
s32 PS4_SYSV_ABI Func_7F04B7D4A7D41E80();
|
||||
s32 PS4_SYSV_ABI Func_8E167252DFA5C957();
|
||||
s32 PS4_SYSV_ABI Func_95D0046E504E3B09();
|
||||
s32 PS4_SYSV_ABI Func_97284BFDA4F18FDF();
|
||||
s32 PS4_SYSV_ABI Func_99E32C1F4737EAB4();
|
||||
s32 PS4_SYSV_ABI Func_9CFF661EA0BCBF83();
|
||||
s32 PS4_SYSV_ABI Func_9EB0E1F467AC3B29();
|
||||
s32 PS4_SYSV_ABI Func_A2318FE6FBABFAA3();
|
||||
s32 PS4_SYSV_ABI Func_BA07A2E1BF7B3971();
|
||||
s32 PS4_SYSV_ABI Func_BD0803EEE0CC29A0();
|
||||
s32 PS4_SYSV_ABI Func_BE6F4E5524BB135F();
|
||||
s32 PS4_SYSV_ABI Func_C0D490EB481EA4D0();
|
||||
s32 PS4_SYSV_ABI Func_C175D392CA6D084A();
|
||||
s32 PS4_SYSV_ABI Func_CD0136AF165D2F2F();
|
||||
s32 PS4_SYSV_ABI Func_D1C0ADB7B52FEAB5();
|
||||
s32 PS4_SYSV_ABI Func_E324765D18EE4D12();
|
||||
s32 PS4_SYSV_ABI Func_E789F980D907B653();
|
||||
s32 PS4_SYSV_ABI Func_F9A32E8685627436();
|
||||
|
||||
void RegisterlibSceNpWebApi(Core::Loader::SymbolsResolver* sym);
|
||||
} // namespace Libraries::NpWebApi
|
|
@ -11,7 +11,6 @@
|
|||
#include <SDL3/SDL.h>
|
||||
#if defined(__APPLE__)
|
||||
#include <TargetConditionals.h>
|
||||
#include <dispatch/dispatch.h>
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
|
@ -72,33 +71,25 @@ static void PlatformSetImeData(ImGuiContext*, ImGuiViewport* viewport, ImGuiPlat
|
|||
auto window_id = (SDL_WindowID)(intptr_t)viewport->PlatformHandle;
|
||||
SDL_Window* window = SDL_GetWindowFromID(window_id);
|
||||
if ((!data->WantVisible || bd->ime_window != window) && bd->ime_window != nullptr) {
|
||||
auto stop_input = [&bd] { SDL_StopTextInput(bd->ime_window); };
|
||||
#ifdef __APPLE__
|
||||
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||
stop_input();
|
||||
});
|
||||
#else
|
||||
stop_input();
|
||||
#endif
|
||||
SDL_RunOnMainThread(
|
||||
[](void* userdata) { SDL_StopTextInput(static_cast<SDL_Window*>(userdata)); },
|
||||
bd->ime_window, true);
|
||||
bd->ime_window = nullptr;
|
||||
}
|
||||
if (data->WantVisible) {
|
||||
SDL_Rect r;
|
||||
r.x = (int)data->InputPos.x;
|
||||
r.y = (int)data->InputPos.y;
|
||||
r.w = 1;
|
||||
r.h = (int)data->InputLineHeight;
|
||||
const auto start_input = [&window, &r] {
|
||||
SDL_SetTextInputArea(window, &r, 0);
|
||||
SDL_StartTextInput(window);
|
||||
};
|
||||
#ifdef __APPLE__
|
||||
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||
start_input();
|
||||
});
|
||||
#else
|
||||
start_input();
|
||||
#endif
|
||||
std::pair<SDL_Window*, SDL_Rect> usr_data;
|
||||
usr_data.first = window;
|
||||
usr_data.second.x = (int)data->InputPos.x;
|
||||
usr_data.second.y = (int)data->InputPos.y;
|
||||
usr_data.second.w = 1;
|
||||
usr_data.second.h = (int)data->InputLineHeight;
|
||||
SDL_RunOnMainThread(
|
||||
[](void* userdata) {
|
||||
auto* params = static_cast<std::pair<SDL_Window*, SDL_Rect>*>(userdata);
|
||||
SDL_SetTextInputArea(params->first, ¶ms->second, 0);
|
||||
SDL_StartTextInput(params->first);
|
||||
},
|
||||
&usr_data, true);
|
||||
bd->ime_window = window;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -106,6 +106,8 @@ void GameListFrame::PlayBackgroundMusic(QTableWidgetItem* item) {
|
|||
void GameListFrame::PopulateGameList() {
|
||||
// Do not show status column if it is not enabled
|
||||
this->setColumnHidden(2, !Config::getCompatibilityEnabled());
|
||||
this->setColumnHidden(6, !Config::GetLoadGameSizeEnabled());
|
||||
|
||||
this->setRowCount(m_game_info->m_games.size());
|
||||
ResizeIcons(icon_size);
|
||||
|
||||
|
|
|
@ -62,11 +62,46 @@ public:
|
|||
QDir dir(dirPath);
|
||||
QDirIterator it(dir.absolutePath(), QDirIterator::Subdirectories);
|
||||
qint64 total = 0;
|
||||
|
||||
if (!Config::GetLoadGameSizeEnabled()) {
|
||||
game.size = FormatSize(0).toStdString();
|
||||
return;
|
||||
}
|
||||
|
||||
// Cache path
|
||||
QFile size_cache_file(Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) /
|
||||
game.serial / "size_cache.txt");
|
||||
QFileInfo cacheInfo(size_cache_file);
|
||||
QFileInfo dirInfo(dirPath);
|
||||
|
||||
// Check if cache file exists and is valid
|
||||
if (size_cache_file.exists() && cacheInfo.lastModified() >= dirInfo.lastModified()) {
|
||||
if (size_cache_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
QTextStream in(&size_cache_file);
|
||||
QString cachedSize = in.readLine();
|
||||
size_cache_file.close();
|
||||
|
||||
if (!cachedSize.isEmpty()) {
|
||||
game.size = cachedSize.toStdString();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Cache is invalid or does not exist; calculate size
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
total += it.fileInfo().size();
|
||||
}
|
||||
|
||||
game.size = FormatSize(total).toStdString();
|
||||
|
||||
// Save new cache
|
||||
if (size_cache_file.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||
QTextStream out(&size_cache_file);
|
||||
out << QString::fromStdString(game.size) << "\n";
|
||||
size_cache_file.close();
|
||||
}
|
||||
}
|
||||
|
||||
static QString GetRegion(char region) {
|
||||
|
|
|
@ -315,6 +315,7 @@ void SettingsDialog::LoadValuesFromConfig() {
|
|||
toml::find_or<std::string>(data, "General", "FullscreenMode", "Borderless")));
|
||||
ui->separateUpdatesCheckBox->setChecked(
|
||||
toml::find_or<bool>(data, "General", "separateUpdateEnabled", false));
|
||||
ui->gameSizeCheckBox->setChecked(toml::find_or<bool>(data, "GUI", "loadGameSizeEnabled", true));
|
||||
ui->showSplashCheckBox->setChecked(toml::find_or<bool>(data, "General", "showSplash", false));
|
||||
ui->logTypeComboBox->setCurrentText(
|
||||
QString::fromStdString(toml::find_or<std::string>(data, "General", "logType", "async")));
|
||||
|
@ -568,6 +569,7 @@ void SettingsDialog::UpdateSettings() {
|
|||
Config::setDumpShaders(ui->dumpShadersCheckBox->isChecked());
|
||||
Config::setNullGpu(ui->nullGpuCheckBox->isChecked());
|
||||
Config::setSeparateUpdateEnabled(ui->separateUpdatesCheckBox->isChecked());
|
||||
Config::setLoadGameSizeEnabled(ui->gameSizeCheckBox->isChecked());
|
||||
Config::setShowSplash(ui->showSplashCheckBox->isChecked());
|
||||
Config::setDebugDump(ui->debugDump->isChecked());
|
||||
Config::setVkValidation(ui->vkValidationCheckBox->isChecked());
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>946</width>
|
||||
<height>536</height>
|
||||
<height>586</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="generalTabVLayout" stretch="0">
|
||||
|
@ -134,7 +134,7 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="fullscreenModeGroupBox">
|
||||
<property name="title">
|
||||
<string>Fullscreen Mode</string>
|
||||
|
@ -483,6 +483,13 @@
|
|||
<property name="bottomMargin">
|
||||
<number>11</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="gameSizeCheckBox">
|
||||
<property name="text">
|
||||
<string>Show Game Size In List</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="playBGMCheckBox">
|
||||
<property name="sizePolicy">
|
||||
|
@ -557,59 +564,59 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="vLayoutTrophy">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="vLayoutTrophy">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>80</number>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="hLayoutTrophy">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="hLayoutTrophy">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="trophyGroupBox">
|
||||
<property name="title">
|
||||
<string>Trophy</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="userNameLayout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="disableTrophycheckBox">
|
||||
<property name="text">
|
||||
<string>Disable Trophy Pop-ups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_Trophy">
|
||||
<property name="text">
|
||||
<string>Trophy Key</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="trophyKeyLineEdit">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<widget class="QGroupBox" name="trophyGroupBox">
|
||||
<property name="title">
|
||||
<string>Trophy</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="userNameLayout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="disableTrophycheckBox">
|
||||
<property name="text">
|
||||
<string>Disable Trophy Pop-ups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_Trophy">
|
||||
<property name="text">
|
||||
<string>Trophy Key</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="trophyKeyLineEdit">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
|
@ -637,8 +644,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>926</width>
|
||||
<height>536</height>
|
||||
<width>946</width>
|
||||
<height>586</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="inputTabVLayout" stretch="0,0">
|
||||
|
@ -853,13 +860,13 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="motionControlsCheckBox">
|
||||
<property name="text">
|
||||
<string>Enable Motion Controls</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="motionControlsCheckBox">
|
||||
<property name="text">
|
||||
<string>Enable Motion Controls</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="controllerWidgetSpacer" native="true">
|
||||
<property name="enabled">
|
||||
|
@ -935,8 +942,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>926</width>
|
||||
<height>536</height>
|
||||
<width>946</width>
|
||||
<height>586</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="graphicsTabVLayout" stretch="0,0">
|
||||
|
@ -1186,8 +1193,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>926</width>
|
||||
<height>536</height>
|
||||
<width>946</width>
|
||||
<height>586</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="pathsTabLayout" stretch="0">
|
||||
|
@ -1259,8 +1266,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>926</width>
|
||||
<height>536</height>
|
||||
<width>946</width>
|
||||
<height>586</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="debugTabVLayout" stretch="0,1">
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>عرض حجم اللعبة في القائمة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>إظهار شاشة البداية</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Vis vis spilstørrelse i listen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Zeigen Sie die Spielgröße in der Liste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Startbildschirm anzeigen</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Εμφάνιση Μεγέθους Παιχνιδιού στη Λίστα</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Show Game Size In List</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Mostrar Tamaño del Juego en la Lista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Mostrar splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>فعالسازی پوشه جداگانه برای بهروزرسانی</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>نمایش اندازه بازی در لیست</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Splash نمایش</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Ota Käyttöön Erillinen Päivityshakemisto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Näytä pelin koko luettelossa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Näytä Aloitusnäyttö</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Dossier séparé pour les mises à jours</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Afficher la taille du jeu dans la liste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Afficher l'image du jeu</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Külön Frissítési Mappa Engedélyezése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Játékméret megjelenítése a listában</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Indítóképernyő Mutatása</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Tampilkan Ukuran Game di Daftar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Abilita Cartella Aggiornamenti Separata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Mostra la dimensione del gioco nell'elenco</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Mostra Schermata Iniziale</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>ゲームサイズをリストに表示</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>スプラッシュを表示する</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>게임 크기를 목록에 표시</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Rodyti žaidimo dydį sąraše</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Aktiver seperat oppdateringsmappe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Vis spillstørrelse i listen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Vis velkomstbilde</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Toon grootte van het spel in de lijst</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Pokaż rozmiar gry na liście</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Pokaż ekran powitania</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Habilitar pasta de atualização separada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Mostrar Tamanho do Jogo na Lista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Mostrar Splash Inicial</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Afișează dimensiunea jocului în listă</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Отдельная папка обновлений</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Показать размер игры в списке</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Показывать заставку</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Aktivizo dosjen e ndarë të përditësimit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Shfaq madhësinë e lojës në listë</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Shfaq Pamjen e nisjes</translation>
|
||||
|
|
|
@ -1032,6 +1032,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Aktivera separat uppdateringsmapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Visa spelstorlek i listan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Visa startskärm</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Göster oyun boyutunu listede</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Başlangıç Ekranını Göster</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Увімкнути окрему папку оновлень</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Показати розмір гри в списку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Показувати заставку</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>Hiển thị Kích thước Game trong Danh sách</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>启用单独的更新目录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>显示游戏大小在列表中</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>显示启动画面</translation>
|
||||
|
|
|
@ -540,6 +540,10 @@
|
|||
<source>Enable Separate Update Folder</source>
|
||||
<translation>Enable Separate Update Folder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Game Size In List</source>
|
||||
<translation>顯示遊戲大小在列表中</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Splash</source>
|
||||
<translation>Show Splash</translation>
|
||||
|
|
|
@ -205,7 +205,9 @@ void WindowSDL::InitTimers() {
|
|||
|
||||
void WindowSDL::RequestKeyboard() {
|
||||
if (keyboard_grab == 0) {
|
||||
SDL_StartTextInput(window);
|
||||
SDL_RunOnMainThread(
|
||||
[](void* userdata) { SDL_StartTextInput(static_cast<SDL_Window*>(userdata)); }, window,
|
||||
true);
|
||||
}
|
||||
keyboard_grab++;
|
||||
}
|
||||
|
@ -214,7 +216,9 @@ void WindowSDL::ReleaseKeyboard() {
|
|||
ASSERT(keyboard_grab > 0);
|
||||
keyboard_grab--;
|
||||
if (keyboard_grab == 0) {
|
||||
SDL_StopTextInput(window);
|
||||
SDL_RunOnMainThread(
|
||||
[](void* userdata) { SDL_StopTextInput(static_cast<SDL_Window*>(userdata)); }, window,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -255,14 +255,6 @@ void EmitImageWrite(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id
|
|||
ctx.OpImageWrite(image, coords, texel, operands.mask, operands.operands);
|
||||
}
|
||||
|
||||
Id EmitCubeFaceCoord(EmitContext& ctx, IR::Inst* inst, Id cube_coords) {
|
||||
if (ctx.profile.supports_native_cube_calc) {
|
||||
return ctx.OpCubeFaceCoordAMD(ctx.F32[2], cube_coords);
|
||||
} else {
|
||||
UNREACHABLE_MSG("SPIR-V Instruction");
|
||||
}
|
||||
}
|
||||
|
||||
Id EmitCubeFaceIndex(EmitContext& ctx, IR::Inst* inst, Id cube_coords) {
|
||||
if (ctx.profile.supports_native_cube_calc) {
|
||||
return ctx.OpCubeFaceIndexAMD(ctx.F32[1], cube_coords);
|
||||
|
|
|
@ -439,7 +439,6 @@ Id EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords,
|
|||
Id EmitImageAtomicOr32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value);
|
||||
Id EmitImageAtomicXor32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value);
|
||||
Id EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value);
|
||||
Id EmitCubeFaceCoord(EmitContext& ctx, IR::Inst* inst, Id cube_coords);
|
||||
Id EmitCubeFaceIndex(EmitContext& ctx, IR::Inst* inst, Id cube_coords);
|
||||
Id EmitLaneId(EmitContext& ctx);
|
||||
Id EmitWarpId(EmitContext& ctx);
|
||||
|
|
|
@ -844,7 +844,7 @@ void Translator::V_FREXP_MANT_F64(const GcnInst& inst) {
|
|||
}
|
||||
|
||||
void Translator::V_FRACT_F64(const GcnInst& inst) {
|
||||
const IR::F32 src0{GetSrc64<IR::F64>(inst.src[0])};
|
||||
const IR::F64 src0{GetSrc64<IR::F64>(inst.src[0])};
|
||||
SetDst64(inst.dst[0], ir.FPFract(src0));
|
||||
}
|
||||
|
||||
|
@ -1069,9 +1069,9 @@ void Translator::V_CUBEID_F32(const GcnInst& inst) {
|
|||
const auto x_neg_cond{ir.FPLessThan(x, ir.Imm32(0.f))};
|
||||
const auto y_neg_cond{ir.FPLessThan(y, ir.Imm32(0.f))};
|
||||
const auto z_neg_cond{ir.FPLessThan(z, ir.Imm32(0.f))};
|
||||
const IR::F32 x_face{ir.Select(x_neg_cond, ir.Imm32(5.f), ir.Imm32(4.f))};
|
||||
const IR::F32 x_face{ir.Select(x_neg_cond, ir.Imm32(1.f), ir.Imm32(0.f))};
|
||||
const IR::F32 y_face{ir.Select(y_neg_cond, ir.Imm32(3.f), ir.Imm32(2.f))};
|
||||
const IR::F32 z_face{ir.Select(z_neg_cond, ir.Imm32(1.f), ir.Imm32(0.f))};
|
||||
const IR::F32 z_face{ir.Select(z_neg_cond, ir.Imm32(5.f), ir.Imm32(4.f))};
|
||||
|
||||
result = SelectCubeResult(x, y, z, x_face, y_face, z_face);
|
||||
}
|
||||
|
@ -1083,18 +1083,13 @@ void Translator::V_CUBESC_F32(const GcnInst& inst) {
|
|||
const auto y = GetSrc<IR::F32>(inst.src[1]);
|
||||
const auto z = GetSrc<IR::F32>(inst.src[2]);
|
||||
|
||||
IR::F32 result;
|
||||
if (profile.supports_native_cube_calc) {
|
||||
const auto coords{ir.CubeFaceCoord(ir.CompositeConstruct(x, y, z))};
|
||||
result = IR::F32{ir.CompositeExtract(coords, 0)};
|
||||
} else {
|
||||
const auto x_neg_cond{ir.FPLessThan(x, ir.Imm32(0.f))};
|
||||
const auto z_neg_cond{ir.FPLessThan(z, ir.Imm32(0.f))};
|
||||
const IR::F32 x_sc{ir.Select(x_neg_cond, ir.FPNeg(x), x)};
|
||||
const IR::F32 z_sc{ir.Select(z_neg_cond, z, ir.FPNeg(z))};
|
||||
const auto x_neg_cond{ir.FPLessThan(x, ir.Imm32(0.f))};
|
||||
const auto z_neg_cond{ir.FPLessThan(z, ir.Imm32(0.f))};
|
||||
const IR::F32 x_sc{ir.Select(x_neg_cond, z, ir.FPNeg(z))};
|
||||
const IR::F32 y_sc{x};
|
||||
const IR::F32 z_sc{ir.Select(z_neg_cond, ir.FPNeg(x), x)};
|
||||
|
||||
result = SelectCubeResult(x, y, z, x_sc, x, z_sc);
|
||||
}
|
||||
const auto result{SelectCubeResult(x, y, z, x_sc, y_sc, z_sc)};
|
||||
SetDst(inst.dst[0], result);
|
||||
}
|
||||
|
||||
|
@ -1103,17 +1098,11 @@ void Translator::V_CUBETC_F32(const GcnInst& inst) {
|
|||
const auto y = GetSrc<IR::F32>(inst.src[1]);
|
||||
const auto z = GetSrc<IR::F32>(inst.src[2]);
|
||||
|
||||
IR::F32 result;
|
||||
if (profile.supports_native_cube_calc) {
|
||||
const auto coords{ir.CubeFaceCoord(ir.CompositeConstruct(x, y, z))};
|
||||
result = IR::F32{ir.CompositeExtract(coords, 1)};
|
||||
} else {
|
||||
const auto y_neg_cond{ir.FPLessThan(y, ir.Imm32(0.f))};
|
||||
const IR::F32 x_z_sc{ir.FPNeg(y)};
|
||||
const IR::F32 y_sc{ir.Select(y_neg_cond, ir.FPNeg(z), z)};
|
||||
const auto y_neg_cond{ir.FPLessThan(y, ir.Imm32(0.f))};
|
||||
const IR::F32 x_z_tc{ir.FPNeg(y)};
|
||||
const IR::F32 y_tc{ir.Select(y_neg_cond, ir.FPNeg(z), z)};
|
||||
|
||||
result = SelectCubeResult(x, y, z, x_z_sc, y_sc, x_z_sc);
|
||||
}
|
||||
const auto result{SelectCubeResult(x, y, z, x_z_tc, y_tc, x_z_tc)};
|
||||
SetDst(inst.dst[0], result);
|
||||
}
|
||||
|
||||
|
@ -1122,7 +1111,7 @@ void Translator::V_CUBEMA_F32(const GcnInst& inst) {
|
|||
const auto y = GetSrc<IR::F32>(inst.src[1]);
|
||||
const auto z = GetSrc<IR::F32>(inst.src[2]);
|
||||
|
||||
const auto two{ir.Imm32(4.f)};
|
||||
const auto two{ir.Imm32(2.f)};
|
||||
const IR::F32 x_major_axis{ir.FPMul(x, two)};
|
||||
const IR::F32 y_major_axis{ir.FPMul(y, two)};
|
||||
const IR::F32 z_major_axis{ir.FPMul(z, two)};
|
||||
|
|
|
@ -1758,10 +1758,6 @@ void IREmitter::ImageWrite(const Value& handle, const Value& coords, const U32&
|
|||
Inst(Opcode::ImageWrite, Flags{info}, handle, coords, lod, multisampling, color);
|
||||
}
|
||||
|
||||
[[nodiscard]] Value IREmitter::CubeFaceCoord(const Value& cube_coords) {
|
||||
return Inst(Opcode::CubeFaceCoord, cube_coords);
|
||||
}
|
||||
|
||||
[[nodiscard]] F32 IREmitter::CubeFaceIndex(const Value& cube_coords) {
|
||||
return Inst<F32>(Opcode::CubeFaceIndex, cube_coords);
|
||||
}
|
||||
|
|
|
@ -342,7 +342,6 @@ public:
|
|||
void ImageWrite(const Value& handle, const Value& coords, const U32& lod,
|
||||
const U32& multisampling, const Value& color, TextureInstInfo info);
|
||||
|
||||
[[nodiscard]] Value CubeFaceCoord(const Value& cube_coords);
|
||||
[[nodiscard]] F32 CubeFaceIndex(const Value& cube_coords);
|
||||
|
||||
void EmitVertex();
|
||||
|
|
|
@ -375,7 +375,6 @@ OPCODE(ImageAtomicXor32, U32, Opaq
|
|||
OPCODE(ImageAtomicExchange32, U32, Opaque, Opaque, U32, )
|
||||
|
||||
// Cube operations - optional, usable if profile.supports_native_cube_calc
|
||||
OPCODE(CubeFaceCoord, F32x2, F32x3, )
|
||||
OPCODE(CubeFaceIndex, F32, F32x3, )
|
||||
|
||||
// Warp operations
|
||||
|
|
|
@ -429,11 +429,19 @@ struct Liverpool {
|
|||
} depth_slice;
|
||||
|
||||
bool DepthValid() const {
|
||||
return Address() != 0 && z_info.format != ZFormat::Invalid;
|
||||
return DepthAddress() != 0 && z_info.format != ZFormat::Invalid;
|
||||
}
|
||||
|
||||
bool StencilValid() const {
|
||||
return Address() != 0 && stencil_info.format != StencilFormat::Invalid;
|
||||
return StencilAddress() != 0 && stencil_info.format != StencilFormat::Invalid;
|
||||
}
|
||||
|
||||
bool DepthWriteValid() const {
|
||||
return DepthWriteAddress() != 0 && z_info.format != ZFormat::Invalid;
|
||||
}
|
||||
|
||||
bool StencilWriteValid() const {
|
||||
return StencilWriteAddress() != 0 && stencil_info.format != StencilFormat::Invalid;
|
||||
}
|
||||
|
||||
u32 Pitch() const {
|
||||
|
@ -444,7 +452,7 @@ struct Liverpool {
|
|||
return (depth_size.height_tile_max + 1) << 3;
|
||||
}
|
||||
|
||||
u64 Address() const {
|
||||
u64 DepthAddress() const {
|
||||
return u64(z_read_base) << 8;
|
||||
}
|
||||
|
||||
|
@ -452,6 +460,14 @@ struct Liverpool {
|
|||
return u64(stencil_read_base) << 8;
|
||||
}
|
||||
|
||||
u64 DepthWriteAddress() const {
|
||||
return u64(z_write_base) << 8;
|
||||
}
|
||||
|
||||
u64 StencilWriteAddress() const {
|
||||
return u64(stencil_write_base) << 8;
|
||||
}
|
||||
|
||||
u32 NumSamples() const {
|
||||
return 1u << z_info.num_samples; // spec doesn't say it is a log2
|
||||
}
|
||||
|
@ -1008,6 +1024,46 @@ struct Liverpool {
|
|||
}
|
||||
};
|
||||
|
||||
enum class ForceEnable : u32 {
|
||||
Off = 0,
|
||||
Enable = 1,
|
||||
Disable = 2,
|
||||
};
|
||||
|
||||
enum class ForceSumm : u32 {
|
||||
Off = 0,
|
||||
MinZ = 1,
|
||||
MaxZ = 2,
|
||||
Both = 3,
|
||||
};
|
||||
|
||||
union DepthRenderOverride {
|
||||
u32 raw;
|
||||
BitField<0, 2, ForceEnable> force_hiz_enable;
|
||||
BitField<2, 2, ForceEnable> force_his_enable0;
|
||||
BitField<4, 2, ForceEnable> force_his_enable1;
|
||||
BitField<6, 1, u32> force_shader_z_order;
|
||||
BitField<7, 1, u32> fast_z_disable;
|
||||
BitField<8, 1, u32> fast_stencil_disable;
|
||||
BitField<9, 1, u32> noop_cull_disable;
|
||||
BitField<10, 1, u32> force_color_kill;
|
||||
BitField<11, 1, u32> force_z_read;
|
||||
BitField<12, 1, u32> force_stencil_read;
|
||||
BitField<13, 2, ForceEnable> force_full_z_range;
|
||||
BitField<15, 1, u32> force_qc_smask_conflict;
|
||||
BitField<16, 1, u32> disable_viewport_clamp;
|
||||
BitField<17, 1, u32> ignore_sc_zrange;
|
||||
BitField<18, 1, u32> disable_fully_covered;
|
||||
BitField<19, 2, ForceSumm> force_z_limit_summ;
|
||||
BitField<21, 5, u32> max_tiles_in_dtt;
|
||||
BitField<26, 1, u32> disable_tile_rate_tiles;
|
||||
BitField<27, 1, u32> force_z_dirty;
|
||||
BitField<28, 1, u32> force_stencil_dirty;
|
||||
BitField<29, 1, u32> force_z_valid;
|
||||
BitField<30, 1, u32> force_stencil_valid;
|
||||
BitField<31, 1, u32> preserve_compression;
|
||||
};
|
||||
|
||||
union AaConfig {
|
||||
BitField<0, 3, u32> msaa_num_samples;
|
||||
BitField<4, 1, u32> aa_mask_centroid_dtmn;
|
||||
|
@ -1209,7 +1265,8 @@ struct Liverpool {
|
|||
DepthRenderControl depth_render_control;
|
||||
INSERT_PADDING_WORDS(1);
|
||||
DepthView depth_view;
|
||||
INSERT_PADDING_WORDS(2);
|
||||
DepthRenderOverride depth_render_override;
|
||||
INSERT_PADDING_WORDS(1);
|
||||
Address depth_htile_data_base;
|
||||
INSERT_PADDING_WORDS(2);
|
||||
float depth_bounds_min;
|
||||
|
|
|
@ -119,6 +119,7 @@ constexpr std::string_view NameOf(ImageType type) {
|
|||
enum class TilingMode : u32 {
|
||||
Depth_MacroTiled = 0u,
|
||||
Display_Linear = 0x8u,
|
||||
Display_MicroTiled = 0x9u,
|
||||
Display_MacroTiled = 0xAu,
|
||||
Texture_MicroTiled = 0xDu,
|
||||
Texture_MacroTiled = 0xEu,
|
||||
|
@ -131,6 +132,8 @@ constexpr std::string_view NameOf(TilingMode type) {
|
|||
return "Depth_MacroTiled";
|
||||
case TilingMode::Display_Linear:
|
||||
return "Display_Linear";
|
||||
case TilingMode::Display_MicroTiled:
|
||||
return "Display_MicroTiled";
|
||||
case TilingMode::Display_MacroTiled:
|
||||
return "Display_MacroTiled";
|
||||
case TilingMode::Texture_MicroTiled:
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(SHADER_FILES
|
||||
detilers/display_micro_64bpp.comp
|
||||
detilers/macro_32bpp.comp
|
||||
detilers/macro_64bpp.comp
|
||||
detilers/macro_8bpp.comp
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#version 450
|
||||
|
||||
layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
|
||||
|
||||
layout(std430, binding = 0) buffer input_buf {
|
||||
uint in_data[];
|
||||
};
|
||||
layout(std430, binding = 1) buffer output_buf {
|
||||
uint out_data[];
|
||||
};
|
||||
|
||||
layout(push_constant) uniform image_info {
|
||||
uint num_levels;
|
||||
uint pitch;
|
||||
uint height;
|
||||
uint c0;
|
||||
uint c1;
|
||||
} info;
|
||||
|
||||
const uint lut_64bpp[16] = {
|
||||
0x05040100, 0x0d0c0908,
|
||||
0x07060302, 0x0f0e0b0a,
|
||||
0x15141110, 0x1d1c1918,
|
||||
0x17161312, 0x1f1e1b1a,
|
||||
0x25242120, 0x2d2c2928,
|
||||
0x27262322, 0x2f2e2b2a,
|
||||
0x35343130, 0x3d3c3938,
|
||||
0x37363332, 0x3f3e3b3a,
|
||||
};
|
||||
|
||||
#define MICRO_TILE_DIM (8)
|
||||
#define MICRO_TILE_SZ (512)
|
||||
#define TEXELS_PER_ELEMENT (1)
|
||||
#define BPP (64)
|
||||
|
||||
void main() {
|
||||
uint x = gl_GlobalInvocationID.x % info.pitch;
|
||||
uint y = (gl_GlobalInvocationID.x / info.pitch) % info.height;
|
||||
uint z = gl_GlobalInvocationID.x / (info.pitch * info.height);
|
||||
|
||||
uint col = bitfieldExtract(x, 0, 3);
|
||||
uint row = bitfieldExtract(y, 0, 3);
|
||||
uint idx_dw = lut_64bpp[(col + row * MICRO_TILE_DIM) >> 2u];
|
||||
uint byte_ofs = gl_LocalInvocationID.x & 3u;
|
||||
uint idx = bitfieldExtract(idx_dw >> (8 * byte_ofs), 0, 8);
|
||||
|
||||
uint slice_offs = z * info.c1 * MICRO_TILE_SZ;
|
||||
uint tile_row = y / MICRO_TILE_DIM;
|
||||
uint tile_column = x / MICRO_TILE_DIM;
|
||||
uint tile_offs = ((tile_row * info.c0) + tile_column) * MICRO_TILE_SZ;
|
||||
uint offs = slice_offs + tile_offs + ((idx * BPP) / 8u);
|
||||
|
||||
uint p0 = in_data[(offs >> 2) + 0];
|
||||
uint p1 = in_data[(offs >> 2) + 1];
|
||||
out_data[2 * gl_GlobalInvocationID.x + 0] = p0;
|
||||
out_data[2 * gl_GlobalInvocationID.x + 1] = p1;
|
||||
}
|
|
@ -71,8 +71,35 @@ vk::ClearValue ColorBufferClearValue(const AmdGpu::Liverpool::ColorBuffer& color
|
|||
|
||||
vk::SampleCountFlagBits NumSamples(u32 num_samples, vk::SampleCountFlags supported_flags);
|
||||
|
||||
static inline bool IsFormatDepthCompatible(vk::Format fmt) {
|
||||
switch (fmt) {
|
||||
// 32-bit float compatible
|
||||
case vk::Format::eD32Sfloat:
|
||||
case vk::Format::eR32Sfloat:
|
||||
case vk::Format::eR32Uint:
|
||||
// 16-bit unorm compatible
|
||||
case vk::Format::eD16Unorm:
|
||||
case vk::Format::eR16Unorm:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool IsFormatStencilCompatible(vk::Format fmt) {
|
||||
switch (fmt) {
|
||||
// 8-bit uint compatible
|
||||
case vk::Format::eS8Uint:
|
||||
case vk::Format::eR8Uint:
|
||||
case vk::Format::eR8Unorm:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static inline vk::Format PromoteFormatToDepth(vk::Format fmt) {
|
||||
if (fmt == vk::Format::eR32Sfloat) {
|
||||
if (fmt == vk::Format::eR32Sfloat || fmt == vk::Format::eR32Uint) {
|
||||
return vk::Format::eD32Sfloat;
|
||||
} else if (fmt == vk::Format::eR16Unorm) {
|
||||
return vk::Format::eD16Unorm;
|
||||
|
|
|
@ -70,6 +70,26 @@ bool Rasterizer::FilterDraw() {
|
|||
return false;
|
||||
}
|
||||
|
||||
const bool cb_disabled =
|
||||
regs.color_control.mode == AmdGpu::Liverpool::ColorControl::OperationMode::Disable;
|
||||
const auto depth_copy =
|
||||
regs.depth_render_override.force_z_dirty && regs.depth_render_override.force_z_valid &&
|
||||
regs.depth_buffer.DepthValid() && regs.depth_buffer.DepthWriteValid() &&
|
||||
regs.depth_buffer.DepthAddress() != regs.depth_buffer.DepthWriteAddress();
|
||||
const auto stencil_copy =
|
||||
regs.depth_render_override.force_stencil_dirty &&
|
||||
regs.depth_render_override.force_stencil_valid && regs.depth_buffer.StencilValid() &&
|
||||
regs.depth_buffer.StencilWriteValid() &&
|
||||
regs.depth_buffer.StencilAddress() != regs.depth_buffer.StencilWriteAddress();
|
||||
if (cb_disabled && (depth_copy || stencil_copy)) {
|
||||
// Games may disable color buffer and enable force depth/stencil dirty and valid to
|
||||
// do a copy from one depth-stencil surface to another, without a pixel shader.
|
||||
// We need to detect this case and perform the copy, otherwise it will have no effect.
|
||||
LOG_TRACE(Render_Vulkan, "Performing depth-stencil override copy");
|
||||
DepthStencilCopy(depth_copy, stencil_copy);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -899,6 +919,59 @@ void Rasterizer::Resolve() {
|
|||
}
|
||||
}
|
||||
|
||||
void Rasterizer::DepthStencilCopy(bool is_depth, bool is_stencil) {
|
||||
auto& regs = liverpool->regs;
|
||||
|
||||
auto read_desc = VideoCore::TextureCache::DepthTargetDesc(
|
||||
regs.depth_buffer, regs.depth_view, regs.depth_control,
|
||||
regs.depth_htile_data_base.GetAddress(), liverpool->last_db_extent, false);
|
||||
auto write_desc = VideoCore::TextureCache::DepthTargetDesc(
|
||||
regs.depth_buffer, regs.depth_view, regs.depth_control,
|
||||
regs.depth_htile_data_base.GetAddress(), liverpool->last_db_extent, true);
|
||||
|
||||
auto& read_image = texture_cache.GetImage(texture_cache.FindImage(read_desc));
|
||||
auto& write_image = texture_cache.GetImage(texture_cache.FindImage(write_desc));
|
||||
|
||||
VideoCore::SubresourceRange sub_range;
|
||||
sub_range.base.layer = liverpool->regs.depth_view.slice_start;
|
||||
sub_range.extent.layers = liverpool->regs.depth_view.NumSlices() - sub_range.base.layer;
|
||||
|
||||
read_image.Transit(vk::ImageLayout::eTransferSrcOptimal, vk::AccessFlagBits2::eTransferRead,
|
||||
sub_range);
|
||||
write_image.Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits2::eTransferWrite,
|
||||
sub_range);
|
||||
|
||||
auto aspect_mask = vk::ImageAspectFlags(0);
|
||||
if (is_depth) {
|
||||
aspect_mask |= vk::ImageAspectFlagBits::eDepth;
|
||||
}
|
||||
if (is_stencil) {
|
||||
aspect_mask |= vk::ImageAspectFlagBits::eStencil;
|
||||
}
|
||||
vk::ImageCopy region = {
|
||||
.srcSubresource =
|
||||
{
|
||||
.aspectMask = aspect_mask,
|
||||
.mipLevel = 0,
|
||||
.baseArrayLayer = sub_range.base.layer,
|
||||
.layerCount = sub_range.extent.layers,
|
||||
},
|
||||
.srcOffset = {0, 0, 0},
|
||||
.dstSubresource =
|
||||
{
|
||||
.aspectMask = aspect_mask,
|
||||
.mipLevel = 0,
|
||||
.baseArrayLayer = sub_range.base.layer,
|
||||
.layerCount = sub_range.extent.layers,
|
||||
},
|
||||
.dstOffset = {0, 0, 0},
|
||||
.extent = {write_image.info.size.width, write_image.info.size.height, 1},
|
||||
};
|
||||
const auto cmdbuf = scheduler.CommandBuffer();
|
||||
cmdbuf.copyImage(read_image.image, vk::ImageLayout::eTransferSrcOptimal, write_image.image,
|
||||
vk::ImageLayout::eTransferDstOptimal, region);
|
||||
}
|
||||
|
||||
void Rasterizer::InlineData(VAddr address, const void* value, u32 num_bytes, bool is_gds) {
|
||||
buffer_cache.InlineData(address, value, num_bytes, is_gds);
|
||||
}
|
||||
|
|
|
@ -71,6 +71,7 @@ private:
|
|||
RenderState PrepareRenderState(u32 mrt_mask);
|
||||
void BeginRendering(const GraphicsPipeline& pipeline, RenderState& state);
|
||||
void Resolve();
|
||||
void DepthStencilCopy(bool is_depth, bool is_stencil);
|
||||
void EliminateFastClear();
|
||||
|
||||
void UpdateDynamicState(const GraphicsPipeline& pipeline);
|
||||
|
|
|
@ -98,7 +98,8 @@ ImageInfo::ImageInfo(const AmdGpu::Liverpool::ColorBuffer& buffer,
|
|||
}
|
||||
|
||||
ImageInfo::ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slices,
|
||||
VAddr htile_address, const AmdGpu::Liverpool::CbDbExtent& hint) noexcept {
|
||||
VAddr htile_address, const AmdGpu::Liverpool::CbDbExtent& hint,
|
||||
bool write_buffer) noexcept {
|
||||
props.is_tiled = false;
|
||||
pixel_format = LiverpoolToVK::DepthFormat(buffer.z_info.format, buffer.stencil_info.format);
|
||||
type = vk::ImageType::e2D;
|
||||
|
@ -111,10 +112,10 @@ ImageInfo::ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slice
|
|||
resources.layers = num_slices;
|
||||
meta_info.htile_addr = buffer.z_info.tile_surface_en ? htile_address : 0;
|
||||
|
||||
stencil_addr = buffer.StencilAddress();
|
||||
stencil_addr = write_buffer ? buffer.StencilWriteAddress() : buffer.StencilAddress();
|
||||
stencil_size = pitch * size.height * sizeof(u8);
|
||||
|
||||
guest_address = buffer.Address();
|
||||
guest_address = write_buffer ? buffer.DepthWriteAddress() : buffer.DepthAddress();
|
||||
const auto depth_slice_sz = buffer.GetDepthSliceSize();
|
||||
guest_size = depth_slice_sz * num_slices;
|
||||
mips_layout.emplace_back(depth_slice_sz, pitch, 0);
|
||||
|
@ -182,6 +183,7 @@ void ImageInfo::UpdateSize() {
|
|||
case AmdGpu::TilingMode::Texture_Volume:
|
||||
mip_d += (-mip_d) & 3u;
|
||||
[[fallthrough]];
|
||||
case AmdGpu::TilingMode::Display_MicroTiled:
|
||||
case AmdGpu::TilingMode::Texture_MicroTiled: {
|
||||
std::tie(mip_info.pitch, mip_info.size) =
|
||||
ImageSizeMicroTiled(mip_w, mip_h, bpp, num_samples);
|
||||
|
|
|
@ -19,7 +19,7 @@ struct ImageInfo {
|
|||
ImageInfo(const AmdGpu::Liverpool::ColorBuffer& buffer,
|
||||
const AmdGpu::Liverpool::CbDbExtent& hint = {}) noexcept;
|
||||
ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slices, VAddr htile_address,
|
||||
const AmdGpu::Liverpool::CbDbExtent& hint = {}) noexcept;
|
||||
const AmdGpu::Liverpool::CbDbExtent& hint = {}, bool write_buffer = false) noexcept;
|
||||
ImageInfo(const AmdGpu::Image& image, const Shader::ImageResource& desc) noexcept;
|
||||
|
||||
bool IsTiled() const {
|
||||
|
|
|
@ -82,13 +82,12 @@ ImageView::ImageView(const Vulkan::Instance& instance, const ImageViewInfo& info
|
|||
vk::Format format = info.format;
|
||||
vk::ImageAspectFlags aspect = image.aspect_mask;
|
||||
if (image.aspect_mask & vk::ImageAspectFlagBits::eDepth &&
|
||||
(format == vk::Format::eR32Sfloat || format == vk::Format::eD32Sfloat ||
|
||||
format == vk::Format::eR16Unorm || format == vk::Format::eD16Unorm)) {
|
||||
Vulkan::LiverpoolToVK::IsFormatDepthCompatible(format)) {
|
||||
format = image.info.pixel_format;
|
||||
aspect = vk::ImageAspectFlagBits::eDepth;
|
||||
}
|
||||
if (image.aspect_mask & vk::ImageAspectFlagBits::eStencil &&
|
||||
(format == vk::Format::eR8Uint || format == vk::Format::eR8Unorm)) {
|
||||
Vulkan::LiverpoolToVK::IsFormatStencilCompatible(format)) {
|
||||
format = image.info.pixel_format;
|
||||
aspect = vk::ImageAspectFlagBits::eStencil;
|
||||
}
|
||||
|
|
|
@ -469,9 +469,6 @@ ImageView& TextureCache::FindDepthTarget(BaseDesc& desc) {
|
|||
}
|
||||
|
||||
void TextureCache::RefreshImage(Image& image, Vulkan::Scheduler* custom_scheduler /*= nullptr*/) {
|
||||
RENDERER_TRACE;
|
||||
TRACE_HINT(fmt::format("{:x}:{:x}", image.info.guest_address, image.info.guest_size));
|
||||
|
||||
if (False(image.flags & ImageFlagBits::Dirty)) {
|
||||
return;
|
||||
}
|
||||
|
@ -480,6 +477,9 @@ void TextureCache::RefreshImage(Image& image, Vulkan::Scheduler* custom_schedule
|
|||
return;
|
||||
}
|
||||
|
||||
RENDERER_TRACE;
|
||||
TRACE_HINT(fmt::format("{:x}:{:x}", image.info.guest_address, image.info.guest_size));
|
||||
|
||||
if (True(image.flags & ImageFlagBits::MaybeCpuDirty) &&
|
||||
False(image.flags & ImageFlagBits::CpuDirty)) {
|
||||
// The image size should be less than page size to be considered MaybeCpuDirty
|
||||
|
|
|
@ -79,9 +79,9 @@ public:
|
|||
DepthTargetDesc(const AmdGpu::Liverpool::DepthBuffer& buffer,
|
||||
const AmdGpu::Liverpool::DepthView& view,
|
||||
const AmdGpu::Liverpool::DepthControl& ctl, VAddr htile_address,
|
||||
const AmdGpu::Liverpool::CbDbExtent& hint = {})
|
||||
const AmdGpu::Liverpool::CbDbExtent& hint = {}, bool write_buffer = false)
|
||||
: BaseDesc{BindingType::DepthTarget,
|
||||
ImageInfo{buffer, view.NumSlices(), htile_address, hint},
|
||||
ImageInfo{buffer, view.NumSlices(), htile_address, hint, write_buffer},
|
||||
ImageViewInfo{buffer, view, ctl}} {}
|
||||
};
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "video_core/texture_cache/image_view.h"
|
||||
#include "video_core/texture_cache/tile_manager.h"
|
||||
|
||||
#include "video_core/host_shaders/detilers/display_micro_64bpp_comp.h"
|
||||
#include "video_core/host_shaders/detilers/macro_32bpp_comp.h"
|
||||
#include "video_core/host_shaders/detilers/macro_64bpp_comp.h"
|
||||
#include "video_core/host_shaders/detilers/macro_8bpp_comp.h"
|
||||
|
@ -53,6 +54,14 @@ const DetilerContext* TileManager::GetDetiler(const ImageInfo& info) const {
|
|||
return nullptr;
|
||||
}
|
||||
break;
|
||||
case AmdGpu::TilingMode::Display_MicroTiled:
|
||||
switch (bpp) {
|
||||
case 64:
|
||||
return &detilers[DetilerType::Display_Micro64];
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -68,10 +77,11 @@ struct DetilerParams {
|
|||
TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler)
|
||||
: instance{instance}, scheduler{scheduler} {
|
||||
static const std::array detiler_shaders{
|
||||
HostShaders::MICRO_8BPP_COMP, HostShaders::MICRO_16BPP_COMP,
|
||||
HostShaders::MICRO_32BPP_COMP, HostShaders::MICRO_64BPP_COMP,
|
||||
HostShaders::MICRO_128BPP_COMP, HostShaders::MACRO_8BPP_COMP,
|
||||
HostShaders::MACRO_32BPP_COMP, HostShaders::MACRO_64BPP_COMP,
|
||||
HostShaders::MICRO_8BPP_COMP, HostShaders::MICRO_16BPP_COMP,
|
||||
HostShaders::MICRO_32BPP_COMP, HostShaders::MICRO_64BPP_COMP,
|
||||
HostShaders::MICRO_128BPP_COMP, HostShaders::MACRO_8BPP_COMP,
|
||||
HostShaders::MACRO_32BPP_COMP, HostShaders::MACRO_64BPP_COMP,
|
||||
HostShaders::DISPLAY_MICRO_64BPP_COMP,
|
||||
};
|
||||
|
||||
boost::container::static_vector<vk::DescriptorSetLayoutBinding, 2> bindings{
|
||||
|
@ -258,7 +268,8 @@ std::pair<vk::Buffer, u32> TileManager::TryDetile(vk::Buffer in_buffer, u32 in_o
|
|||
params.num_levels = info.resources.levels;
|
||||
params.pitch0 = info.pitch >> (info.props.is_block ? 2u : 0u);
|
||||
params.height = info.size.height;
|
||||
if (info.tiling_mode == AmdGpu::TilingMode::Texture_Volume) {
|
||||
if (info.tiling_mode == AmdGpu::TilingMode::Texture_Volume ||
|
||||
info.tiling_mode == AmdGpu::TilingMode::Display_MicroTiled) {
|
||||
ASSERT(info.resources.levels == 1);
|
||||
const auto tiles_per_row = info.pitch / 8u;
|
||||
const auto tiles_per_slice = tiles_per_row * ((info.size.height + 7u) / 8u);
|
||||
|
|
|
@ -22,6 +22,8 @@ enum DetilerType : u32 {
|
|||
Macro32,
|
||||
Macro64,
|
||||
|
||||
Display_Micro64,
|
||||
|
||||
Max
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue