mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-22 18:15:14 +00:00
Merge remote-tracking branch 'upstream/main' into batch-sync
This commit is contained in:
commit
9357180f66
2
.github/ISSUE_TEMPLATE/game-bug-report.yaml
vendored
2
.github/ISSUE_TEMPLATE/game-bug-report.yaml
vendored
@ -17,7 +17,7 @@ body:
|
|||||||
|
|
||||||
This repository does not provide support for game patches. If you are having issues with patches please refer to [Cheats and Patches Repository](https://github.com/shadps4-emu/ps4_cheats).
|
This repository does not provide support for game patches. If you are having issues with patches please refer to [Cheats and Patches Repository](https://github.com/shadps4-emu/ps4_cheats).
|
||||||
|
|
||||||
Before submitting an issue please check [Game Compatibility Repository](https://github.com/shadps4-emu/shadps4-game-compatibility) for the information about the status of the game.
|
Before submitting an issue please check [Game Compatibility Repository](https://github.com/shadps4-compatibility/shadps4-game-compatibility) for the information about the status of the game.
|
||||||
|
|
||||||
Please make an effort to make sure your issue isn't already reported.
|
Please make an effort to make sure your issue isn't already reported.
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ execute_process(
|
|||||||
|
|
||||||
# If there's no upstream set or the command failed, check remote.pushDefault
|
# If there's no upstream set or the command failed, check remote.pushDefault
|
||||||
if (GIT_REMOTE_RESULT OR GIT_REMOTE_NAME STREQUAL "")
|
if (GIT_REMOTE_RESULT OR GIT_REMOTE_NAME STREQUAL "")
|
||||||
message("check default push")
|
message(STATUS "check default push")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND git config --get remote.pushDefault
|
COMMAND git config --get remote.pushDefault
|
||||||
OUTPUT_VARIABLE GIT_REMOTE_NAME
|
OUTPUT_VARIABLE GIT_REMOTE_NAME
|
||||||
@ -134,30 +134,30 @@ if (GIT_REMOTE_RESULT OR GIT_REMOTE_NAME STREQUAL "")
|
|||||||
ERROR_QUIET
|
ERROR_QUIET
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
message("got remote: ${GIT_REMOTE_NAME}")
|
message(STATUS "got remote: ${GIT_REMOTE_NAME}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# If running in GitHub Actions and the above fails
|
# If running in GitHub Actions and the above fails
|
||||||
if (GIT_REMOTE_RESULT OR GIT_REMOTE_NAME STREQUAL "")
|
if (GIT_REMOTE_RESULT OR GIT_REMOTE_NAME STREQUAL "")
|
||||||
message("check github")
|
message(STATUS "check github")
|
||||||
set(GIT_REMOTE_NAME "origin")
|
set(GIT_REMOTE_NAME "origin")
|
||||||
|
|
||||||
# Retrieve environment variables
|
# Retrieve environment variables
|
||||||
if (DEFINED ENV{GITHUB_HEAD_REF} AND NOT "$ENV{GITHUB_HEAD_REF}" STREQUAL "")
|
if (DEFINED ENV{GITHUB_HEAD_REF} AND NOT "$ENV{GITHUB_HEAD_REF}" STREQUAL "")
|
||||||
message("github head ref: $ENV{GITHUB_HEAD_REF}")
|
message(STATUS "github head ref: $ENV{GITHUB_HEAD_REF}")
|
||||||
set(GITHUB_HEAD_REF "$ENV{GITHUB_HEAD_REF}")
|
set(GITHUB_HEAD_REF "$ENV{GITHUB_HEAD_REF}")
|
||||||
else()
|
else()
|
||||||
set(GITHUB_HEAD_REF "")
|
set(GITHUB_HEAD_REF "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (DEFINED ENV{GITHUB_REF} AND NOT "$ENV{GITHUB_REF}" STREQUAL "")
|
if (DEFINED ENV{GITHUB_REF} AND NOT "$ENV{GITHUB_REF}" STREQUAL "")
|
||||||
message("github ref: $ENV{GITHUB_REF}")
|
message(STATUS "github ref: $ENV{GITHUB_REF}")
|
||||||
string(REGEX REPLACE "^refs/[^/]*/" "" GITHUB_BRANCH "$ENV{GITHUB_REF}")
|
string(REGEX REPLACE "^refs/[^/]*/" "" GITHUB_BRANCH "$ENV{GITHUB_REF}")
|
||||||
string(REGEX MATCH "refs/pull/([0-9]+)/merge" MATCHED_REF "$ENV{GITHUB_REF}")
|
string(REGEX MATCH "refs/pull/([0-9]+)/merge" MATCHED_REF "$ENV{GITHUB_REF}")
|
||||||
if (MATCHED_REF)
|
if (MATCHED_REF)
|
||||||
set(PR_NUMBER "${CMAKE_MATCH_1}")
|
set(PR_NUMBER "${CMAKE_MATCH_1}")
|
||||||
set(GITHUB_BRANCH "")
|
set(GITHUB_BRANCH "")
|
||||||
message("PR number: ${PR_NUMBER}")
|
message(STATUS "PR number: ${PR_NUMBER}")
|
||||||
else()
|
else()
|
||||||
set(PR_NUMBER "")
|
set(PR_NUMBER "")
|
||||||
endif()
|
endif()
|
||||||
@ -179,7 +179,7 @@ if (GIT_REMOTE_RESULT OR GIT_REMOTE_NAME STREQUAL "")
|
|||||||
elseif ("${PR_NUMBER}" STREQUAL "" AND NOT "${GITHUB_REF}" STREQUAL "")
|
elseif ("${PR_NUMBER}" STREQUAL "" AND NOT "${GITHUB_REF}" STREQUAL "")
|
||||||
set(GIT_BRANCH "${GITHUB_REF}")
|
set(GIT_BRANCH "${GITHUB_REF}")
|
||||||
elseif("${GIT_BRANCH}" STREQUAL "")
|
elseif("${GIT_BRANCH}" STREQUAL "")
|
||||||
message("couldn't find branch")
|
message(STATUS "couldn't find branch")
|
||||||
set(GIT_BRANCH "detached-head")
|
set(GIT_BRANCH "detached-head")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
@ -188,13 +188,13 @@ else()
|
|||||||
if (INDEX GREATER -1)
|
if (INDEX GREATER -1)
|
||||||
string(SUBSTRING "${GIT_REMOTE_NAME}" 0 "${INDEX}" GIT_REMOTE_NAME)
|
string(SUBSTRING "${GIT_REMOTE_NAME}" 0 "${INDEX}" GIT_REMOTE_NAME)
|
||||||
elseif("${GIT_REMOTE_NAME}" STREQUAL "")
|
elseif("${GIT_REMOTE_NAME}" STREQUAL "")
|
||||||
message("reset to origin")
|
message(STATUS "reset to origin")
|
||||||
set(GIT_REMOTE_NAME "origin")
|
set(GIT_REMOTE_NAME "origin")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Get remote link
|
# Get remote link
|
||||||
message("getting remote link")
|
message(STATUS "getting remote link")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND git config --get remote.${GIT_REMOTE_NAME}.url
|
COMMAND git config --get remote.${GIT_REMOTE_NAME}.url
|
||||||
OUTPUT_VARIABLE GIT_REMOTE_URL
|
OUTPUT_VARIABLE GIT_REMOTE_URL
|
||||||
@ -212,7 +212,12 @@ set(APP_VERSION "${EMULATOR_VERSION_MAJOR}.${EMULATOR_VERSION_MINOR}.${EMULATOR_
|
|||||||
set(APP_IS_RELEASE false)
|
set(APP_IS_RELEASE false)
|
||||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/common/scm_rev.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/src/common/scm_rev.cpp" @ONLY)
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/common/scm_rev.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/src/common/scm_rev.cpp" @ONLY)
|
||||||
|
|
||||||
message("end git things, remote: ${GIT_REMOTE_NAME}, branch: ${GIT_BRANCH}")
|
message("-- end git things, remote: ${GIT_REMOTE_NAME}, branch: ${GIT_BRANCH}, link: ${GIT_REMOTE_URL}")
|
||||||
|
|
||||||
|
if(NOT GIT_REMOTE_URL MATCHES "shadps4-emu/shadPS4" OR NOT GIT_BRANCH STREQUAL "main")
|
||||||
|
message(STATUS "not main, disabling auto update")
|
||||||
|
set(ENABLE_UPDATER OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32 AND ENABLE_QT_GUI AND NOT CMAKE_PREFIX_PATH)
|
if(WIN32 AND ENABLE_QT_GUI AND NOT CMAKE_PREFIX_PATH)
|
||||||
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/DetectQtInstallation.cmake")
|
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/DetectQtInstallation.cmake")
|
||||||
|
@ -37,7 +37,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
|||||||
**shadPS4** is an early **PlayStation 4** emulator for **Windows**, **Linux** and **macOS** written in C++.
|
**shadPS4** is an early **PlayStation 4** emulator for **Windows**, **Linux** and **macOS** written in C++.
|
||||||
|
|
||||||
If you encounter problems or have doubts, do not hesitate to look at the [**Quickstart**](https://github.com/shadps4-emu/shadPS4/wiki/I.-Quick-start-%5BUsers%5D).\
|
If you encounter problems or have doubts, do not hesitate to look at the [**Quickstart**](https://github.com/shadps4-emu/shadPS4/wiki/I.-Quick-start-%5BUsers%5D).\
|
||||||
To verify that a game works, you can look at [**shadPS4 Game Compatibility**](https://github.com/shadps4-emu/shadps4-game-compatibility).\
|
To verify that a game works, you can look at [**shadPS4 Game Compatibility**](https://github.com/shadps4-compatibility/shadps4-game-compatibility).\
|
||||||
To discuss shadPS4 development, suggest ideas or to ask for help, join our [**Discord server**](https://discord.gg/bFJxfftGW6).\
|
To discuss shadPS4 development, suggest ideas or to ask for help, join our [**Discord server**](https://discord.gg/bFJxfftGW6).\
|
||||||
To get the latest news, go to our [**X (Twitter)**](https://x.com/shadps4) or our [**website**](https://shadps4.net/).\
|
To get the latest news, go to our [**X (Twitter)**](https://x.com/shadps4) or our [**website**](https://shadps4.net/).\
|
||||||
For those who'd like to donate to the project, we now have a [**Kofi page**](https://ko-fi.com/shadps4)!
|
For those who'd like to donate to the project, we now have a [**Kofi page**](https://ko-fi.com/shadps4)!
|
||||||
|
@ -147,7 +147,7 @@ Accurately identifying games will help other developers that own that game recog
|
|||||||
- If your issue is small or you aren't sure whether you have properly identified something, [join the Discord server](https://discord.gg/MyZRaBngxA) and use the #development channel
|
- If your issue is small or you aren't sure whether you have properly identified something, [join the Discord server](https://discord.gg/MyZRaBngxA) and use the #development channel
|
||||||
to concisely explain the issue, as well as any findings you currently have.
|
to concisely explain the issue, as well as any findings you currently have.
|
||||||
|
|
||||||
- It is recommended that you check the [game compatibility issue tracker](https://github.com/shadps4-emu/shadps4-game-compatibility/issues) and post very short summaries of progress changes there,
|
- It is recommended that you check the [game compatibility issue tracker](https://github.com/shadps4-compatibility/shadps4-game-compatibility/issues) and post very short summaries of progress changes there,
|
||||||
(such as the game now booting into the menu or getting in-game) for organizational and status update purposes.
|
(such as the game now booting into the menu or getting in-game) for organizational and status update purposes.
|
||||||
|
|
||||||
- ⚠ **Do not post theoretical, unproven game-specific issues in the emulator issue tracker that you cannot verify and locate in the emulator source code as being a bug.**\
|
- ⚠ **Do not post theoretical, unproven game-specific issues in the emulator issue tracker that you cannot verify and locate in the emulator source code as being a bug.**\
|
||||||
|
2
externals/sirit
vendored
2
externals/sirit
vendored
@ -1 +1 @@
|
|||||||
Subproject commit b4eccb336f1b1169af48dac1e04015985af86e3e
|
Subproject commit 282083a595dcca86814dedab2f2b0363ef38f1ec
|
@ -32,6 +32,7 @@ std::filesystem::path find_fs_path_or(const basic_value<TC>& v, const K& ky,
|
|||||||
namespace Config {
|
namespace Config {
|
||||||
|
|
||||||
// General
|
// General
|
||||||
|
static int volumeSlider = 100;
|
||||||
static bool isNeo = false;
|
static bool isNeo = false;
|
||||||
static bool isDevKit = false;
|
static bool isDevKit = false;
|
||||||
static bool isPSNSignedIn = false;
|
static bool isPSNSignedIn = false;
|
||||||
@ -108,6 +109,9 @@ static std::string trophyKey = "";
|
|||||||
// Expected number of items in the config file
|
// Expected number of items in the config file
|
||||||
static constexpr u64 total_entries = 54;
|
static constexpr u64 total_entries = 54;
|
||||||
|
|
||||||
|
int getVolumeSlider() {
|
||||||
|
return volumeSlider;
|
||||||
|
}
|
||||||
bool allowHDR() {
|
bool allowHDR() {
|
||||||
return isHDRAllowed;
|
return isHDRAllowed;
|
||||||
}
|
}
|
||||||
@ -157,6 +161,10 @@ std::filesystem::path GetSaveDataPath() {
|
|||||||
return save_data_path;
|
return save_data_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setVolumeSlider(int volumeValue) {
|
||||||
|
volumeSlider = volumeValue;
|
||||||
|
}
|
||||||
|
|
||||||
void setLoadGameSizeEnabled(bool enable) {
|
void setLoadGameSizeEnabled(bool enable) {
|
||||||
load_game_size = enable;
|
load_game_size = enable;
|
||||||
}
|
}
|
||||||
@ -611,6 +619,7 @@ void load(const std::filesystem::path& path) {
|
|||||||
if (data.contains("General")) {
|
if (data.contains("General")) {
|
||||||
const toml::value& general = data.at("General");
|
const toml::value& general = data.at("General");
|
||||||
|
|
||||||
|
volumeSlider = toml::find_or<int>(general, "volumeSlider", volumeSlider);
|
||||||
isNeo = toml::find_or<bool>(general, "isPS4Pro", isNeo);
|
isNeo = toml::find_or<bool>(general, "isPS4Pro", isNeo);
|
||||||
isDevKit = toml::find_or<bool>(general, "isDevKit", isDevKit);
|
isDevKit = toml::find_or<bool>(general, "isDevKit", isDevKit);
|
||||||
isPSNSignedIn = toml::find_or<bool>(general, "isPSNSignedIn", isPSNSignedIn);
|
isPSNSignedIn = toml::find_or<bool>(general, "isPSNSignedIn", isPSNSignedIn);
|
||||||
@ -806,6 +815,7 @@ void save(const std::filesystem::path& path) {
|
|||||||
fmt::print("Saving new configuration file {}\n", fmt::UTF(path.u8string()));
|
fmt::print("Saving new configuration file {}\n", fmt::UTF(path.u8string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data["General"]["volumeSlider"] = volumeSlider;
|
||||||
data["General"]["isPS4Pro"] = isNeo;
|
data["General"]["isPS4Pro"] = isNeo;
|
||||||
data["General"]["isDevKit"] = isDevKit;
|
data["General"]["isDevKit"] = isDevKit;
|
||||||
data["General"]["isPSNSignedIn"] = isPSNSignedIn;
|
data["General"]["isPSNSignedIn"] = isPSNSignedIn;
|
||||||
@ -901,6 +911,7 @@ void save(const std::filesystem::path& path) {
|
|||||||
|
|
||||||
void setDefaultValues() {
|
void setDefaultValues() {
|
||||||
// General
|
// General
|
||||||
|
volumeSlider = 100;
|
||||||
isNeo = false;
|
isNeo = false;
|
||||||
isDevKit = false;
|
isDevKit = false;
|
||||||
isPSNSignedIn = false;
|
isPSNSignedIn = false;
|
||||||
|
@ -19,6 +19,8 @@ enum HideCursorState : int { Never, Idle, Always };
|
|||||||
void load(const std::filesystem::path& path);
|
void load(const std::filesystem::path& path);
|
||||||
void save(const std::filesystem::path& path);
|
void save(const std::filesystem::path& path);
|
||||||
|
|
||||||
|
int getVolumeSlider();
|
||||||
|
void setVolumeSlider(int volumeValue);
|
||||||
std::string getTrophyKey();
|
std::string getTrophyKey();
|
||||||
void setTrophyKey(std::string key);
|
void setTrophyKey(std::string key);
|
||||||
bool getIsFullscreen();
|
bool getIsFullscreen();
|
||||||
|
@ -753,6 +753,10 @@ static bool PatchesIllegalInstructionHandler(void* context) {
|
|||||||
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
|
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
|
||||||
const auto status =
|
const auto status =
|
||||||
Common::Decoder::Instance()->decodeInstruction(instruction, operands, code_address);
|
Common::Decoder::Instance()->decodeInstruction(instruction, operands, code_address);
|
||||||
|
if (ZYAN_SUCCESS(status) && instruction.mnemonic == ZydisMnemonic::ZYDIS_MNEMONIC_UD2)
|
||||||
|
[[unlikely]] {
|
||||||
|
UNREACHABLE_MSG("ud2 at code address {:#x}", (u64)code_address);
|
||||||
|
}
|
||||||
LOG_ERROR(Core, "Failed to patch address {:x} -- mnemonic: {}", (u64)code_address,
|
LOG_ERROR(Core, "Failed to patch address {:x} -- mnemonic: {}", (u64)code_address,
|
||||||
ZYAN_SUCCESS(status) ? ZydisMnemonicGetString(instruction.mnemonic)
|
ZYAN_SUCCESS(status) ? ZydisMnemonicGetString(instruction.mnemonic)
|
||||||
: "Failed to decode");
|
: "Failed to decode");
|
||||||
|
@ -219,7 +219,7 @@ int PS4_SYSV_ABI sceAjmStrError() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceAjm(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("NVDXiUesSbA", "libSceAjm", 1, "libSceAjm", 1, 1, sceAjmBatchCancel);
|
LIB_FUNCTION("NVDXiUesSbA", "libSceAjm", 1, "libSceAjm", 1, 1, sceAjmBatchCancel);
|
||||||
LIB_FUNCTION("WfAiBW8Wcek", "libSceAjm", 1, "libSceAjm", 1, 1, sceAjmBatchErrorDump);
|
LIB_FUNCTION("WfAiBW8Wcek", "libSceAjm", 1, "libSceAjm", 1, 1, sceAjmBatchErrorDump);
|
||||||
LIB_FUNCTION("dmDybN--Fn8", "libSceAjm", 1, "libSceAjm", 1, 1, sceAjmBatchJobControlBufferRa);
|
LIB_FUNCTION("dmDybN--Fn8", "libSceAjm", 1, "libSceAjm", 1, 1, sceAjmBatchJobControlBufferRa);
|
||||||
|
@ -229,5 +229,5 @@ int PS4_SYSV_ABI sceAjmModuleRegister(u32 context, AjmCodecType codec_type, s64
|
|||||||
int PS4_SYSV_ABI sceAjmModuleUnregister();
|
int PS4_SYSV_ABI sceAjmModuleUnregister();
|
||||||
int PS4_SYSV_ABI sceAjmStrError();
|
int PS4_SYSV_ABI sceAjmStrError();
|
||||||
|
|
||||||
void RegisterlibSceAjm(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Ajm
|
} // namespace Libraries::Ajm
|
||||||
|
@ -369,7 +369,7 @@ int PS4_SYSV_ABI sceAppContentGetDownloadedStoreCountry() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceAppContent(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("AS45QoYHjc4", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1, _Z5dummyv);
|
LIB_FUNCTION("AS45QoYHjc4", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1, _Z5dummyv);
|
||||||
LIB_FUNCTION("ZiATpP9gEkA", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
LIB_FUNCTION("ZiATpP9gEkA", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||||
sceAppContentAddcontDelete);
|
sceAppContentAddcontDelete);
|
||||||
|
@ -119,5 +119,5 @@ int PS4_SYSV_ABI sceAppContentGetAddcontInfoByEntitlementId();
|
|||||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfoListByIroTag();
|
int PS4_SYSV_ABI sceAppContentGetAddcontInfoListByIroTag();
|
||||||
int PS4_SYSV_ABI sceAppContentGetDownloadedStoreCountry();
|
int PS4_SYSV_ABI sceAppContentGetDownloadedStoreCountry();
|
||||||
|
|
||||||
void RegisterlibSceAppContent(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::AppContent
|
} // namespace Libraries::AppContent
|
||||||
|
@ -218,7 +218,7 @@ int PS4_SYSV_ABI sceAudioInVmicWrite() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceAudioIn(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("IQtWgnrw6v8", "libSceAudioIn", 1, "libSceAudioIn", 1, 1,
|
LIB_FUNCTION("IQtWgnrw6v8", "libSceAudioIn", 1, "libSceAudioIn", 1, 1,
|
||||||
sceAudioInChangeAppModuleState);
|
sceAudioInChangeAppModuleState);
|
||||||
LIB_FUNCTION("Jh6WbHhnI68", "libSceAudioIn", 1, "libSceAudioIn", 1, 1, sceAudioInClose);
|
LIB_FUNCTION("Jh6WbHhnI68", "libSceAudioIn", 1, "libSceAudioIn", 1, 1, sceAudioInClose);
|
||||||
|
@ -54,5 +54,5 @@ int PS4_SYSV_ABI sceAudioInVmicCreate();
|
|||||||
int PS4_SYSV_ABI sceAudioInVmicDestroy();
|
int PS4_SYSV_ABI sceAudioInVmicDestroy();
|
||||||
int PS4_SYSV_ABI sceAudioInVmicWrite();
|
int PS4_SYSV_ABI sceAudioInVmicWrite();
|
||||||
|
|
||||||
void RegisterlibSceAudioIn(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::AudioIn
|
} // namespace Libraries::AudioIn
|
||||||
|
@ -523,9 +523,24 @@ s32 PS4_SYSV_ABI sceAudioOutSetVolume(s32 handle, s32 flag, s32* vol) {
|
|||||||
}
|
}
|
||||||
port.impl->SetVolume(port.volume);
|
port.impl->SetVolume(port.volume);
|
||||||
}
|
}
|
||||||
|
AdjustVol();
|
||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AdjustVol() {
|
||||||
|
if (audio == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < ports_out.size(); i++) {
|
||||||
|
std::unique_lock lock{ports_out[i].mutex};
|
||||||
|
if (!ports_out[i].IsOpen()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ports_out[i].impl->SetVolume(ports_out[i].volume);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceAudioOutSetVolumeDown() {
|
int PS4_SYSV_ABI sceAudioOutSetVolumeDown() {
|
||||||
LOG_ERROR(Lib_AudioOut, "(STUBBED) called");
|
LOG_ERROR(Lib_AudioOut, "(STUBBED) called");
|
||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
@ -596,7 +611,7 @@ int PS4_SYSV_ABI sceAudioOutSetSystemDebugState() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceAudioOut(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("cx2dYFbzIAg", "libSceAudioOutDeviceService", 1, "libSceAudioOut", 1, 1,
|
LIB_FUNCTION("cx2dYFbzIAg", "libSceAudioOutDeviceService", 1, "libSceAudioOut", 1, 1,
|
||||||
sceAudioOutDeviceIdOpen);
|
sceAudioOutDeviceIdOpen);
|
||||||
LIB_FUNCTION("tKumjQSzhys", "libSceAudioDeviceControl", 1, "libSceAudioOut", 1, 1,
|
LIB_FUNCTION("tKumjQSzhys", "libSceAudioDeviceControl", 1, "libSceAudioOut", 1, 1,
|
||||||
|
@ -181,5 +181,6 @@ int PS4_SYSV_ABI sceAudioOutSystemControlSet();
|
|||||||
int PS4_SYSV_ABI sceAudioOutSparkControlSetEqCoef();
|
int PS4_SYSV_ABI sceAudioOutSparkControlSetEqCoef();
|
||||||
int PS4_SYSV_ABI sceAudioOutSetSystemDebugState();
|
int PS4_SYSV_ABI sceAudioOutSetSystemDebugState();
|
||||||
|
|
||||||
void RegisterlibSceAudioOut(Core::Loader::SymbolsResolver* sym);
|
void AdjustVol();
|
||||||
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::AudioOut
|
} // namespace Libraries::AudioOut
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <thread>
|
#include <thread>
|
||||||
#include <SDL3/SDL_audio.h>
|
#include <SDL3/SDL_audio.h>
|
||||||
#include <SDL3/SDL_hints.h>
|
#include <SDL3/SDL_hints.h>
|
||||||
|
#include <common/config.h>
|
||||||
|
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "core/libraries/audio/audioout.h"
|
#include "core/libraries/audio/audioout.h"
|
||||||
@ -41,6 +42,7 @@ public:
|
|||||||
stream = nullptr;
|
stream = nullptr;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
SDL_SetAudioStreamGain(stream, Config::getVolumeSlider() / 100.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
~SDLPortBackend() override {
|
~SDLPortBackend() override {
|
||||||
@ -77,7 +79,8 @@ public:
|
|||||||
}
|
}
|
||||||
// SDL does not have per-channel volumes, for now just take the maximum of the channels.
|
// SDL does not have per-channel volumes, for now just take the maximum of the channels.
|
||||||
const auto vol = *std::ranges::max_element(ch_volumes);
|
const auto vol = *std::ranges::max_element(ch_volumes);
|
||||||
if (!SDL_SetAudioStreamGain(stream, static_cast<float>(vol) / SCE_AUDIO_OUT_VOLUME_0DB)) {
|
if (!SDL_SetAudioStreamGain(stream, static_cast<float>(vol) / SCE_AUDIO_OUT_VOLUME_0DB *
|
||||||
|
Config::getVolumeSlider() / 100.0f)) {
|
||||||
LOG_WARNING(Lib_AudioOut, "Failed to change SDL audio stream volume: {}",
|
LOG_WARNING(Lib_AudioOut, "Failed to change SDL audio stream volume: {}",
|
||||||
SDL_GetError());
|
SDL_GetError());
|
||||||
}
|
}
|
||||||
|
@ -526,11 +526,18 @@ s32 PS4_SYSV_ABI sceAudio3dStrError() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
s32 PS4_SYSV_ABI sceAudio3dTerminate() {
|
s32 PS4_SYSV_ABI sceAudio3dTerminate() {
|
||||||
LOG_ERROR(Lib_Audio3d, "(STUBBED) called");
|
LOG_INFO(Lib_Audio3d, "called");
|
||||||
|
if (!state) {
|
||||||
|
return ORBIS_AUDIO3D_ERROR_NOT_READY;
|
||||||
|
}
|
||||||
|
|
||||||
|
AudioOut::sceAudioOutOutput(state->audio_out_handle, nullptr);
|
||||||
|
AudioOut::sceAudioOutClose(state->audio_out_handle);
|
||||||
|
state.release();
|
||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceAudio3d(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("pZlOm1aF3aA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutClose);
|
LIB_FUNCTION("pZlOm1aF3aA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutClose);
|
||||||
LIB_FUNCTION("ucEsi62soTo", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutOpen);
|
LIB_FUNCTION("ucEsi62soTo", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutOpen);
|
||||||
LIB_FUNCTION("7NYEzJ9SJbM", "libSceAudio3d", 1, "libSceAudio3d", 1, 1,
|
LIB_FUNCTION("7NYEzJ9SJbM", "libSceAudio3d", 1, "libSceAudio3d", 1, 1,
|
||||||
|
@ -141,5 +141,5 @@ s32 PS4_SYSV_ABI sceAudio3dSetGpuRenderer();
|
|||||||
s32 PS4_SYSV_ABI sceAudio3dStrError();
|
s32 PS4_SYSV_ABI sceAudio3dStrError();
|
||||||
s32 PS4_SYSV_ABI sceAudio3dTerminate();
|
s32 PS4_SYSV_ABI sceAudio3dTerminate();
|
||||||
|
|
||||||
void RegisterlibSceAudio3d(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Audio3d
|
} // namespace Libraries::Audio3d
|
||||||
|
@ -278,7 +278,7 @@ s32 PS4_SYSV_ABI sceAvPlayerVprintf(const char* format, va_list args) {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceAvPlayer(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("KMcEa+rHsIo", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerAddSource);
|
LIB_FUNCTION("KMcEa+rHsIo", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerAddSource);
|
||||||
LIB_FUNCTION("x8uvuFOPZhU", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
LIB_FUNCTION("x8uvuFOPZhU", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
||||||
sceAvPlayerAddSourceEx);
|
sceAvPlayerAddSourceEx);
|
||||||
|
@ -290,6 +290,6 @@ enum class SceAvPlayerAvSyncMode {
|
|||||||
|
|
||||||
using SceAvPlayerLogCallback = int PS4_SYSV_ABI (*)(void* p, const char* format, va_list args);
|
using SceAvPlayerLogCallback = int PS4_SYSV_ABI (*)(void* p, const char* format, va_list args);
|
||||||
|
|
||||||
void RegisterlibSceAvPlayer(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
|
|
||||||
} // namespace Libraries::AvPlayer
|
} // namespace Libraries::AvPlayer
|
||||||
|
@ -410,7 +410,7 @@ s32 PS4_SYSV_ABI sceCameraStopByHandle() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceCamera(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("QhjrPkRPUZQ", "libSceCamera", 1, "libSceCamera", 1, 1, sceCameraAccGetData);
|
LIB_FUNCTION("QhjrPkRPUZQ", "libSceCamera", 1, "libSceCamera", 1, 1, sceCameraAccGetData);
|
||||||
LIB_FUNCTION("UFonL7xopFM", "libSceCamera", 1, "libSceCamera", 1, 1, sceCameraAudioClose);
|
LIB_FUNCTION("UFonL7xopFM", "libSceCamera", 1, "libSceCamera", 1, 1, sceCameraAudioClose);
|
||||||
LIB_FUNCTION("fkZE7Hup2ro", "libSceCamera", 1, "libSceCamera", 1, 1, sceCameraAudioGetData);
|
LIB_FUNCTION("fkZE7Hup2ro", "libSceCamera", 1, "libSceCamera", 1, 1, sceCameraAudioGetData);
|
||||||
|
@ -304,5 +304,5 @@ s32 PS4_SYSV_ABI sceCameraStartByHandle();
|
|||||||
s32 PS4_SYSV_ABI sceCameraStop(s32 handle);
|
s32 PS4_SYSV_ABI sceCameraStop(s32 handle);
|
||||||
s32 PS4_SYSV_ABI sceCameraStopByHandle();
|
s32 PS4_SYSV_ABI sceCameraStopByHandle();
|
||||||
|
|
||||||
void RegisterlibSceCamera(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Camera
|
} // namespace Libraries::Camera
|
@ -102,7 +102,7 @@ s32 PS4_SYSV_ABI sceCompanionHttpdUnregisterRequestCallback() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceCompanionHttpd(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("8pWltDG7h6A", "libSceCompanionHttpd", 1, "libSceCompanionHttpd", 1, 1,
|
LIB_FUNCTION("8pWltDG7h6A", "libSceCompanionHttpd", 1, "libSceCompanionHttpd", 1, 1,
|
||||||
sceCompanionHttpdAddHeader);
|
sceCompanionHttpdAddHeader);
|
||||||
LIB_FUNCTION("B-QBMeFdNgY", "libSceCompanionHttpd", 1, "libSceCompanionHttpd", 1, 1,
|
LIB_FUNCTION("B-QBMeFdNgY", "libSceCompanionHttpd", 1, "libSceCompanionHttpd", 1, 1,
|
||||||
|
@ -87,5 +87,5 @@ s32 PS4_SYSV_ABI sceCompanionHttpdTerminate();
|
|||||||
s32 PS4_SYSV_ABI sceCompanionHttpdUnregisterRequestBodyReceptionCallback();
|
s32 PS4_SYSV_ABI sceCompanionHttpdUnregisterRequestBodyReceptionCallback();
|
||||||
s32 PS4_SYSV_ABI sceCompanionHttpdUnregisterRequestCallback();
|
s32 PS4_SYSV_ABI sceCompanionHttpdUnregisterRequestCallback();
|
||||||
|
|
||||||
void RegisterlibSceCompanionHttpd(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::CompanionHttpd
|
} // namespace Libraries::CompanionHttpd
|
@ -56,7 +56,7 @@ s32 PS4_SYSV_ABI sceCompanionUtilTerminate() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceCompanionUtil(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("cE5Msy11WhU", "libSceCompanionUtil", 1, "libSceCompanionUtil", 1, 1,
|
LIB_FUNCTION("cE5Msy11WhU", "libSceCompanionUtil", 1, "libSceCompanionUtil", 1, 1,
|
||||||
sceCompanionUtilGetEvent);
|
sceCompanionUtilGetEvent);
|
||||||
LIB_FUNCTION("MaVrz79mT5o", "libSceCompanionUtil", 1, "libSceCompanionUtil", 1, 1,
|
LIB_FUNCTION("MaVrz79mT5o", "libSceCompanionUtil", 1, "libSceCompanionUtil", 1, 1,
|
||||||
|
@ -29,5 +29,5 @@ s32 PS4_SYSV_ABI sceCompanionUtilInitialize();
|
|||||||
s32 PS4_SYSV_ABI sceCompanionUtilOptParamInitialize();
|
s32 PS4_SYSV_ABI sceCompanionUtilOptParamInitialize();
|
||||||
s32 PS4_SYSV_ABI sceCompanionUtilTerminate();
|
s32 PS4_SYSV_ABI sceCompanionUtilTerminate();
|
||||||
|
|
||||||
void RegisterlibSceCompanionUtil(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::CompanionUtil
|
} // namespace Libraries::CompanionUtil
|
@ -34,7 +34,7 @@ int PS4_SYSV_ABI Func_E7EBCE96E92F91F8() {
|
|||||||
return ORBIS_DISC_MAP_ERROR_NO_BITMAP_INFO;
|
return ORBIS_DISC_MAP_ERROR_NO_BITMAP_INFO;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceDiscMap(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("fl1eoDnwQ4s", "libSceDiscMap", 1, "libSceDiscMap", 1, 1,
|
LIB_FUNCTION("fl1eoDnwQ4s", "libSceDiscMap", 1, "libSceDiscMap", 1, 1,
|
||||||
sceDiscMapGetPackageSize);
|
sceDiscMapGetPackageSize);
|
||||||
LIB_FUNCTION("lbQKqsERhtE", "libSceDiscMap", 1, "libSceDiscMap", 1, 1,
|
LIB_FUNCTION("lbQKqsERhtE", "libSceDiscMap", 1, "libSceDiscMap", 1, 1,
|
||||||
|
@ -18,5 +18,5 @@ int PS4_SYSV_ABI Func_8A828CAEE7EDD5E9(char* path, s64 offset, s64 nbytes, int*
|
|||||||
int* ret2);
|
int* ret2);
|
||||||
int PS4_SYSV_ABI Func_E7EBCE96E92F91F8();
|
int PS4_SYSV_ABI Func_E7EBCE96E92F91F8();
|
||||||
|
|
||||||
void RegisterlibSceDiscMap(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::DiscMap
|
} // namespace Libraries::DiscMap
|
@ -545,7 +545,7 @@ s32 PS4_SYSV_ABI sceFiberSwitch(OrbisFiber* fiber, u64 arg_on_run_to, u64* arg_o
|
|||||||
return sceFiberSwitchImpl(fiber, nullptr, 0, arg_on_run_to, arg_on_run);
|
return sceFiberSwitchImpl(fiber, nullptr, 0, arg_on_run_to, arg_on_run);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceFiber(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("hVYD7Ou2pCQ", "libSceFiber", 1, "libSceFiber", 1, 1, sceFiberInitialize);
|
LIB_FUNCTION("hVYD7Ou2pCQ", "libSceFiber", 1, "libSceFiber", 1, 1, sceFiberInitialize);
|
||||||
LIB_FUNCTION("7+OJIpko9RY", "libSceFiber", 1, "libSceFiber", 1, 1,
|
LIB_FUNCTION("7+OJIpko9RY", "libSceFiber", 1, "libSceFiber", 1, 1,
|
||||||
sceFiberInitializeImpl); // _sceFiberInitializeWithInternalOptionImpl
|
sceFiberInitializeImpl); // _sceFiberInitializeWithInternalOptionImpl
|
||||||
|
@ -116,5 +116,5 @@ s32 PS4_SYSV_ABI sceFiberRename(OrbisFiber* fiber, const char* name);
|
|||||||
|
|
||||||
s32 PS4_SYSV_ABI sceFiberGetThreadFramePointerAddress(u64* addr_frame_pointer);
|
s32 PS4_SYSV_ABI sceFiberGetThreadFramePointerAddress(u64* addr_frame_pointer);
|
||||||
|
|
||||||
void RegisterlibSceFiber(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Fiber
|
} // namespace Libraries::Fiber
|
@ -246,7 +246,7 @@ int PS4_SYSV_ABI sceGameLiveStreamingUnregisterCallback() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceGameLiveStreaming(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("caqgDl+V9qA", "libSceGameLiveStreaming_debug", 1, "libSceGameLiveStreaming", 1, 1,
|
LIB_FUNCTION("caqgDl+V9qA", "libSceGameLiveStreaming_debug", 1, "libSceGameLiveStreaming", 1, 1,
|
||||||
sceGameLiveStreamingStartDebugBroadcast);
|
sceGameLiveStreamingStartDebugBroadcast);
|
||||||
LIB_FUNCTION("0i8Lrllxwow", "libSceGameLiveStreaming_debug", 1, "libSceGameLiveStreaming", 1, 1,
|
LIB_FUNCTION("0i8Lrllxwow", "libSceGameLiveStreaming_debug", 1, "libSceGameLiveStreaming", 1, 1,
|
||||||
|
@ -77,5 +77,5 @@ int PS4_SYSV_ABI sceGameLiveStreamingStopSocialFeedbackMessageFiltering();
|
|||||||
int PS4_SYSV_ABI sceGameLiveStreamingTerminate();
|
int PS4_SYSV_ABI sceGameLiveStreamingTerminate();
|
||||||
int PS4_SYSV_ABI sceGameLiveStreamingUnregisterCallback();
|
int PS4_SYSV_ABI sceGameLiveStreamingUnregisterCallback();
|
||||||
|
|
||||||
void RegisterlibSceGameLiveStreaming(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::GameLiveStreaming
|
} // namespace Libraries::GameLiveStreaming
|
@ -2823,7 +2823,7 @@ int PS4_SYSV_ABI Func_F916890425496553() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceGnmDriver(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LOG_INFO(Lib_GnmDriver, "Initializing presenter");
|
LOG_INFO(Lib_GnmDriver, "Initializing presenter");
|
||||||
liverpool = std::make_unique<AmdGpu::Liverpool>();
|
liverpool = std::make_unique<AmdGpu::Liverpool>();
|
||||||
presenter = std::make_unique<Vulkan::Presenter>(*g_window, liverpool.get());
|
presenter = std::make_unique<Vulkan::Presenter>(*g_window, liverpool.get());
|
||||||
|
@ -297,5 +297,5 @@ int PS4_SYSV_ABI Func_BFB41C057478F0BF();
|
|||||||
int PS4_SYSV_ABI Func_E51D44DB8151238C();
|
int PS4_SYSV_ABI Func_E51D44DB8151238C();
|
||||||
int PS4_SYSV_ABI Func_F916890425496553();
|
int PS4_SYSV_ABI Func_F916890425496553();
|
||||||
|
|
||||||
void RegisterlibSceGnmDriver(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::GnmDriver
|
} // namespace Libraries::GnmDriver
|
||||||
|
@ -939,7 +939,7 @@ s32 PS4_SYSV_ABI Func_FF2E0E53015FE231() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceHmd(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("8gH1aLgty5I", "libsceHmdReprojectionMultilayer", 1, "libSceHmd", 1, 1,
|
LIB_FUNCTION("8gH1aLgty5I", "libsceHmdReprojectionMultilayer", 1, "libSceHmd", 1, 1,
|
||||||
sceHmdReprojectionStartMultilayer);
|
sceHmdReprojectionStartMultilayer);
|
||||||
LIB_FUNCTION("gEokC+OGI8g", "libSceHmdDistortion", 1, "libSceHmd", 1, 1,
|
LIB_FUNCTION("gEokC+OGI8g", "libSceHmdDistortion", 1, "libSceHmd", 1, 1,
|
||||||
|
@ -199,5 +199,5 @@ s32 PS4_SYSV_ABI Func_B9A6FA0735EC7E49();
|
|||||||
s32 PS4_SYSV_ABI Func_FC193BD653F2AF2E();
|
s32 PS4_SYSV_ABI Func_FC193BD653F2AF2E();
|
||||||
s32 PS4_SYSV_ABI Func_FF2E0E53015FE231();
|
s32 PS4_SYSV_ABI Func_FF2E0E53015FE231();
|
||||||
|
|
||||||
void RegisterlibSceHmd(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Hmd
|
} // namespace Libraries::Hmd
|
@ -190,7 +190,7 @@ Status PS4_SYSV_ABI sceErrorDialogUpdateStatus() {
|
|||||||
return g_status;
|
return g_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceErrorDialog(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("ekXHb1kDBl0", "libSceErrorDialog", 1, "libSceErrorDialog", 1, 1,
|
LIB_FUNCTION("ekXHb1kDBl0", "libSceErrorDialog", 1, "libSceErrorDialog", 1, 1,
|
||||||
sceErrorDialogClose);
|
sceErrorDialogClose);
|
||||||
LIB_FUNCTION("t2FvHRXzgqk", "libSceErrorDialog", 1, "libSceErrorDialog", 1, 1,
|
LIB_FUNCTION("t2FvHRXzgqk", "libSceErrorDialog", 1, "libSceErrorDialog", 1, 1,
|
||||||
|
@ -24,5 +24,5 @@ int PS4_SYSV_ABI sceErrorDialogOpenWithReport();
|
|||||||
CommonDialog::Error PS4_SYSV_ABI sceErrorDialogTerminate();
|
CommonDialog::Error PS4_SYSV_ABI sceErrorDialogTerminate();
|
||||||
CommonDialog::Status PS4_SYSV_ABI sceErrorDialogUpdateStatus();
|
CommonDialog::Status PS4_SYSV_ABI sceErrorDialogUpdateStatus();
|
||||||
|
|
||||||
void RegisterlibSceErrorDialog(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::ErrorDialog
|
} // namespace Libraries::ErrorDialog
|
@ -65,7 +65,7 @@ public:
|
|||||||
return Error::OK;
|
return Error::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_lock lock{g_ime_state.queue_mutex};
|
std::unique_lock<std::mutex> lock{g_ime_state.queue_mutex};
|
||||||
|
|
||||||
while (!g_ime_state.event_queue.empty()) {
|
while (!g_ime_state.event_queue.empty()) {
|
||||||
OrbisImeEvent event = g_ime_state.event_queue.front();
|
OrbisImeEvent event = g_ime_state.event_queue.front();
|
||||||
@ -144,17 +144,17 @@ int PS4_SYSV_ABI sceImeCheckUpdateTextInfo() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 PS4_SYSV_ABI sceImeClose() {
|
Error PS4_SYSV_ABI sceImeClose() {
|
||||||
LOG_INFO(Lib_Ime, "(STUBBED) called");
|
LOG_INFO(Lib_Ime, "called");
|
||||||
|
|
||||||
if (!g_ime_handler) {
|
if (!g_ime_handler) {
|
||||||
return ORBIS_IME_ERROR_NOT_OPENED;
|
return Error::NOT_OPENED;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_ime_handler.release();
|
g_ime_handler.release();
|
||||||
g_ime_ui = ImeUi();
|
g_ime_ui = ImeUi();
|
||||||
g_ime_state = ImeState();
|
g_ime_state = ImeState();
|
||||||
return ORBIS_OK;
|
return Error::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceImeConfigGet() {
|
int PS4_SYSV_ABI sceImeConfigGet() {
|
||||||
@ -223,32 +223,68 @@ int PS4_SYSV_ABI sceImeGetPanelPositionAndForm() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Error PS4_SYSV_ABI sceImeGetPanelSize(const OrbisImeParam* param, u32* width, u32* height) {
|
Error PS4_SYSV_ABI sceImeGetPanelSize(const OrbisImeParam* param, u32* width, u32* height) {
|
||||||
LOG_INFO(Lib_Ime, "called");
|
LOG_INFO(Lib_Ime, "sceImeGetPanelSize called");
|
||||||
|
|
||||||
if (!width || !height) {
|
if (!param) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeGetPanelSize: param is NULL");
|
||||||
return Error::INVALID_ADDRESS;
|
return Error::INVALID_ADDRESS;
|
||||||
}
|
}
|
||||||
|
if (!width) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeGetPanelSize: width pointer is NULL");
|
||||||
|
return Error::INVALID_ADDRESS;
|
||||||
|
}
|
||||||
|
if (!height) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeGetPanelSize: height pointer is NULL");
|
||||||
|
return Error::INVALID_ADDRESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (static_cast<u32>(param->option) & ~0x7BFF) { // Basic check for invalid options
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeGetPanelSize: Invalid option 0x{:X}",
|
||||||
|
static_cast<u32>(param->option));
|
||||||
|
return Error::INVALID_OPTION;
|
||||||
|
}
|
||||||
|
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case OrbisImeType::Default:
|
case OrbisImeType::Default:
|
||||||
|
*width = 500; // dummy value
|
||||||
|
*height = 100; // dummy value
|
||||||
|
LOG_INFO(Lib_Ime, "sceImeGetPanelSize: IME type Default ({})",
|
||||||
|
static_cast<u32>(param->type));
|
||||||
|
break;
|
||||||
case OrbisImeType::BasicLatin:
|
case OrbisImeType::BasicLatin:
|
||||||
|
*width = 500; // dummy value
|
||||||
|
*height = 100; // dummy value
|
||||||
|
LOG_INFO(Lib_Ime, "sceImeGetPanelSize: IME type BasicLatin ({})",
|
||||||
|
static_cast<u32>(param->type));
|
||||||
|
break;
|
||||||
case OrbisImeType::Url:
|
case OrbisImeType::Url:
|
||||||
|
*width = 500; // dummy value
|
||||||
|
*height = 100; // dummy value
|
||||||
|
LOG_INFO(Lib_Ime, "sceImeGetPanelSize: IME type Url ({})", static_cast<u32>(param->type));
|
||||||
|
break;
|
||||||
case OrbisImeType::Mail:
|
case OrbisImeType::Mail:
|
||||||
// We set our custom sizes, commented sizes are the original ones
|
// We set our custom sizes, commented sizes are the original ones
|
||||||
*width = 500; // 793
|
*width = 500; // 793
|
||||||
*height = 100; // 408
|
*height = 100; // 408
|
||||||
|
LOG_INFO(Lib_Ime, "sceImeGetPanelSize: IME type Mail ({})", static_cast<u32>(param->type));
|
||||||
break;
|
break;
|
||||||
case OrbisImeType::Number:
|
case OrbisImeType::Number:
|
||||||
*width = 370;
|
*width = 370;
|
||||||
*height = 402;
|
*height = 402;
|
||||||
|
LOG_INFO(Lib_Ime, "sceImeGetPanelSize: IME type Number ({})",
|
||||||
|
static_cast<u32>(param->type));
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeGetPanelSize: Invalid IME type ({})",
|
||||||
|
static_cast<u32>(param->type));
|
||||||
|
return Error::INVALID_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Error::OK;
|
return Error::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
Error PS4_SYSV_ABI sceImeKeyboardClose(s32 userId) {
|
Error PS4_SYSV_ABI sceImeKeyboardClose(Libraries::UserService::OrbisUserServiceUserId userId) {
|
||||||
LOG_INFO(Lib_Ime, "(STUBBED) called");
|
LOG_INFO(Lib_Ime, "called");
|
||||||
|
|
||||||
if (!g_keyboard_handler) {
|
if (!g_keyboard_handler) {
|
||||||
return Error::NOT_OPENED;
|
return Error::NOT_OPENED;
|
||||||
@ -268,9 +304,12 @@ int PS4_SYSV_ABI sceImeKeyboardGetResourceId() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
Error PS4_SYSV_ABI sceImeKeyboardOpen(s32 userId, const OrbisImeKeyboardParam* param) {
|
Error PS4_SYSV_ABI sceImeKeyboardOpen(Libraries::UserService::OrbisUserServiceUserId userId,
|
||||||
|
const OrbisImeKeyboardParam* param) {
|
||||||
LOG_INFO(Lib_Ime, "called");
|
LOG_INFO(Lib_Ime, "called");
|
||||||
|
|
||||||
|
LOG_INFO(Lib_Ime, "kValidImeDialogExtOptionMask=0x{:X}", kValidImeDialogExtOptionMask);
|
||||||
|
|
||||||
if (!param) {
|
if (!param) {
|
||||||
return Error::INVALID_ADDRESS;
|
return Error::INVALID_ADDRESS;
|
||||||
}
|
}
|
||||||
@ -308,13 +347,169 @@ Error PS4_SYSV_ABI sceImeOpen(const OrbisImeParam* param, const OrbisImeParamExt
|
|||||||
LOG_INFO(Lib_Ime, "called");
|
LOG_INFO(Lib_Ime, "called");
|
||||||
|
|
||||||
if (!param) {
|
if (!param) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: param is null");
|
||||||
return Error::INVALID_ADDRESS;
|
return Error::INVALID_ADDRESS;
|
||||||
|
} else {
|
||||||
|
// LOG_DEBUG values for debugging purposes
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: user_id={}", param->user_id);
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: type={}", static_cast<u32>(param->type));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: supported_languages={:064b}",
|
||||||
|
static_cast<u64>(param->supported_languages));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: enter_label={}", static_cast<u32>(param->enter_label));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: input_method={}", static_cast<u32>(param->input_method));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: filter={:p}", reinterpret_cast<void*>(param->filter));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: option={:032b}", static_cast<u32>(param->option));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: maxTextLength={}", param->maxTextLength);
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: inputTextBuffer={:p}",
|
||||||
|
static_cast<const void*>(param->inputTextBuffer));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: posx={}", param->posx);
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: posy={}", param->posy);
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: horizontal_alignment={}",
|
||||||
|
static_cast<u32>(param->horizontal_alignment));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: vertical_alignment={}",
|
||||||
|
static_cast<u32>(param->vertical_alignment));
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: work={:p}", param->work);
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: arg={:p}", param->arg);
|
||||||
|
LOG_DEBUG(Lib_Ime, "param: handler={:p}", reinterpret_cast<void*>(param->handler));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!extended) {
|
||||||
|
LOG_INFO(Lib_Ime, "sceImeOpen: extended is null");
|
||||||
|
} else {
|
||||||
|
// LOG_DEBUG values for debugging purposes
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: option={:032b}", static_cast<u32>(extended->option));
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_base={{{},{},{},{}}}", extended->color_base.r,
|
||||||
|
extended->color_base.g, extended->color_base.b, extended->color_base.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_line={{{},{},{},{}}}", extended->color_line.r,
|
||||||
|
extended->color_line.g, extended->color_line.b, extended->color_line.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_text_field={{{},{},{},{}}}",
|
||||||
|
extended->color_text_field.r, extended->color_text_field.g,
|
||||||
|
extended->color_text_field.b, extended->color_text_field.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_preedit={{{},{},{},{}}}", extended->color_preedit.r,
|
||||||
|
extended->color_preedit.g, extended->color_preedit.b, extended->color_preedit.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_button_default={{{},{},{},{}}}",
|
||||||
|
extended->color_button_default.r, extended->color_button_default.g,
|
||||||
|
extended->color_button_default.b, extended->color_button_default.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_button_function={{{},{},{},{}}}",
|
||||||
|
extended->color_button_function.r, extended->color_button_function.g,
|
||||||
|
extended->color_button_function.b, extended->color_button_function.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_button_symbol={{{},{},{},{}}}",
|
||||||
|
extended->color_button_symbol.r, extended->color_button_symbol.g,
|
||||||
|
extended->color_button_symbol.b, extended->color_button_symbol.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_text={{{},{},{},{}}}", extended->color_text.r,
|
||||||
|
extended->color_text.g, extended->color_text.b, extended->color_text.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: color_special={{{},{},{},{}}}", extended->color_special.r,
|
||||||
|
extended->color_special.g, extended->color_special.b, extended->color_special.a);
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: priority={}", static_cast<u32>(extended->priority));
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: additional_dictionary_path={:p}",
|
||||||
|
static_cast<const void*>(extended->additional_dictionary_path));
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: ext_keyboard_filter={:p}",
|
||||||
|
reinterpret_cast<void*>(extended->ext_keyboard_filter));
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: disable_device={:032b}",
|
||||||
|
static_cast<u32>(extended->disable_device));
|
||||||
|
LOG_DEBUG(Lib_Ime, "extended: ext_keyboard_mode={}", extended->ext_keyboard_mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param->user_id < 1 || param->user_id > 4) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: Invalid user_id ({})", static_cast<u32>(param->user_id));
|
||||||
|
return Error::INVALID_USER_ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!magic_enum::enum_contains(param->type)) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: Invalid type ({})", static_cast<u32>(param->type));
|
||||||
|
return Error::INVALID_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (static_cast<u64>(param->supported_languages) & ~kValidOrbisImeLanguageMask) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: supported_languages has invalid bits (0x{:016X})",
|
||||||
|
static_cast<u64>(param->supported_languages));
|
||||||
|
return Error::INVALID_SUPPORTED_LANGUAGES;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!magic_enum::enum_contains(param->enter_label)) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: Invalid enter_label ({})",
|
||||||
|
static_cast<u32>(param->enter_label));
|
||||||
|
return Error::INVALID_ENTER_LABEL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!magic_enum::enum_contains(param->input_method)) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: Invalid input_method ({})",
|
||||||
|
static_cast<u32>(param->input_method));
|
||||||
|
return Error::INVALID_INPUT_METHOD;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (static_cast<u32>(param->option) & ~kValidImeOptionMask) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: option has invalid bits set (0x{:X}), mask=(0x{:X})",
|
||||||
|
static_cast<u32>(param->option), kValidImeOptionMask);
|
||||||
|
return Error::INVALID_OPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param->maxTextLength == 0 || param->maxTextLength > ORBIS_IME_DIALOG_MAX_TEXT_LENGTH) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: maxTextLength invalid ({})", param->maxTextLength);
|
||||||
|
return Error::INVALID_MAX_TEXT_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!param->inputTextBuffer) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: inputTextBuffer is NULL");
|
||||||
|
return Error::INVALID_INPUT_TEXT_BUFFER;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool useHighRes = True(param->option & OrbisImeOption::USE_OVER_2K_COORDINATES);
|
||||||
|
const float maxWidth = useHighRes ? 3840.0f : 1920.0f;
|
||||||
|
const float maxHeight = useHighRes ? 2160.0f : 1080.0f;
|
||||||
|
|
||||||
|
if (param->posx < 0.0f || param->posx >= maxWidth) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: posx out of range (%.2f), max allowed %.0f", param->posx,
|
||||||
|
maxWidth);
|
||||||
|
return Error::INVALID_POSX;
|
||||||
|
}
|
||||||
|
if (param->posy < 0.0f || param->posy >= maxHeight) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: posy out of range (%.2f), max allowed %.0f", param->posy,
|
||||||
|
maxHeight);
|
||||||
|
return Error::INVALID_POSY;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!magic_enum::enum_contains(param->horizontal_alignment)) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: Invalid horizontal_alignment ({})",
|
||||||
|
static_cast<u32>(param->horizontal_alignment));
|
||||||
|
return Error::INVALID_HORIZONTALIGNMENT;
|
||||||
|
}
|
||||||
|
if (!magic_enum::enum_contains(param->vertical_alignment)) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: Invalid vertical_alignment ({})",
|
||||||
|
static_cast<u32>(param->vertical_alignment));
|
||||||
|
return Error::INVALID_VERTICALALIGNMENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (extended) {
|
||||||
|
u32 ext_option_value = static_cast<u32>(extended->option);
|
||||||
|
if (ext_option_value & ~kValidImeExtOptionMask) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: extended->option has invalid bits set (0x{:X})",
|
||||||
|
ext_option_value);
|
||||||
|
return Error::INVALID_EXTENDED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!param->work) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: work buffer is NULL");
|
||||||
|
return Error::INVALID_WORK;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (unsigned i = 0; i < sizeof(param->reserved); ++i) {
|
||||||
|
if (param->reserved[i] != 0) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: reserved field must be zeroed");
|
||||||
|
return Error::INVALID_RESERVED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Todo: validate arg and handler
|
||||||
|
|
||||||
if (g_ime_handler) {
|
if (g_ime_handler) {
|
||||||
|
LOG_ERROR(Lib_Ime, "sceImeOpen: Error BUSY");
|
||||||
return Error::BUSY;
|
return Error::BUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_ime_handler = std::make_unique<ImeHandler>(param);
|
g_ime_handler = std::make_unique<ImeHandler>(param);
|
||||||
|
LOG_INFO(Lib_Ime, "sceImeOpen: OK");
|
||||||
return Error::OK;
|
return Error::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,7 +519,7 @@ int PS4_SYSV_ABI sceImeOpenInternal() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PS4_SYSV_ABI sceImeParamInit(OrbisImeParam* param) {
|
void PS4_SYSV_ABI sceImeParamInit(OrbisImeParam* param) {
|
||||||
LOG_INFO(Lib_Ime, "called");
|
LOG_INFO(Lib_Ime, "sceImeParamInit called");
|
||||||
|
|
||||||
if (!param) {
|
if (!param) {
|
||||||
return;
|
return;
|
||||||
@ -481,7 +676,7 @@ int PS4_SYSV_ABI sceImeVshUpdateContext2() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceIme(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("mN+ZoSN-8hQ", "libSceIme", 1, "libSceIme", 1, 1, FinalizeImeModule);
|
LIB_FUNCTION("mN+ZoSN-8hQ", "libSceIme", 1, "libSceIme", 1, 1, FinalizeImeModule);
|
||||||
LIB_FUNCTION("uTW+63goeJs", "libSceIme", 1, "libSceIme", 1, 1, InitializeImeModule);
|
LIB_FUNCTION("uTW+63goeJs", "libSceIme", 1, "libSceIme", 1, 1, InitializeImeModule);
|
||||||
LIB_FUNCTION("Lf3DeGWC6xg", "libSceIme", 1, "libSceIme", 1, 1, sceImeCheckFilterText);
|
LIB_FUNCTION("Lf3DeGWC6xg", "libSceIme", 1, "libSceIme", 1, 1, sceImeCheckFilterText);
|
||||||
|
@ -18,7 +18,7 @@ int PS4_SYSV_ABI InitializeImeModule();
|
|||||||
int PS4_SYSV_ABI sceImeCheckFilterText();
|
int PS4_SYSV_ABI sceImeCheckFilterText();
|
||||||
int PS4_SYSV_ABI sceImeCheckRemoteEventParam();
|
int PS4_SYSV_ABI sceImeCheckRemoteEventParam();
|
||||||
int PS4_SYSV_ABI sceImeCheckUpdateTextInfo();
|
int PS4_SYSV_ABI sceImeCheckUpdateTextInfo();
|
||||||
int PS4_SYSV_ABI sceImeClose();
|
Error PS4_SYSV_ABI sceImeClose();
|
||||||
int PS4_SYSV_ABI sceImeConfigGet();
|
int PS4_SYSV_ABI sceImeConfigGet();
|
||||||
int PS4_SYSV_ABI sceImeConfigSet();
|
int PS4_SYSV_ABI sceImeConfigSet();
|
||||||
int PS4_SYSV_ABI sceImeConfirmCandidate();
|
int PS4_SYSV_ABI sceImeConfirmCandidate();
|
||||||
@ -33,10 +33,11 @@ int PS4_SYSV_ABI sceImeFilterText();
|
|||||||
int PS4_SYSV_ABI sceImeForTestFunction();
|
int PS4_SYSV_ABI sceImeForTestFunction();
|
||||||
int PS4_SYSV_ABI sceImeGetPanelPositionAndForm();
|
int PS4_SYSV_ABI sceImeGetPanelPositionAndForm();
|
||||||
Error PS4_SYSV_ABI sceImeGetPanelSize(const OrbisImeParam* param, u32* width, u32* height);
|
Error PS4_SYSV_ABI sceImeGetPanelSize(const OrbisImeParam* param, u32* width, u32* height);
|
||||||
Error PS4_SYSV_ABI sceImeKeyboardClose(s32 userId);
|
Error PS4_SYSV_ABI sceImeKeyboardClose(Libraries::UserService::OrbisUserServiceUserId userId);
|
||||||
int PS4_SYSV_ABI sceImeKeyboardGetInfo();
|
int PS4_SYSV_ABI sceImeKeyboardGetInfo();
|
||||||
int PS4_SYSV_ABI sceImeKeyboardGetResourceId();
|
int PS4_SYSV_ABI sceImeKeyboardGetResourceId();
|
||||||
Error PS4_SYSV_ABI sceImeKeyboardOpen(s32 userId, const OrbisImeKeyboardParam* param);
|
Error PS4_SYSV_ABI sceImeKeyboardOpen(Libraries::UserService::OrbisUserServiceUserId userId,
|
||||||
|
const OrbisImeKeyboardParam* param);
|
||||||
int PS4_SYSV_ABI sceImeKeyboardOpenInternal();
|
int PS4_SYSV_ABI sceImeKeyboardOpenInternal();
|
||||||
int PS4_SYSV_ABI sceImeKeyboardSetMode();
|
int PS4_SYSV_ABI sceImeKeyboardSetMode();
|
||||||
int PS4_SYSV_ABI sceImeKeyboardUpdate();
|
int PS4_SYSV_ABI sceImeKeyboardUpdate();
|
||||||
@ -68,6 +69,6 @@ int PS4_SYSV_ABI sceImeVshUpdate();
|
|||||||
int PS4_SYSV_ABI sceImeVshUpdateContext();
|
int PS4_SYSV_ABI sceImeVshUpdateContext();
|
||||||
int PS4_SYSV_ABI sceImeVshUpdateContext2();
|
int PS4_SYSV_ABI sceImeVshUpdateContext2();
|
||||||
|
|
||||||
void RegisterlibSceIme(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
|
|
||||||
} // namespace Libraries::Ime
|
} // namespace Libraries::Ime
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <core/libraries/system/userservice.h>
|
||||||
|
#include <magic_enum/magic_enum.hpp>
|
||||||
#include "common/enum.h"
|
#include "common/enum.h"
|
||||||
#include "common/types.h"
|
#include "common/types.h"
|
||||||
#include "core/libraries/rtc/rtc.h"
|
#include "core/libraries/rtc/rtc.h"
|
||||||
@ -10,8 +12,28 @@
|
|||||||
constexpr u32 ORBIS_IME_MAX_TEXT_LENGTH = 2048;
|
constexpr u32 ORBIS_IME_MAX_TEXT_LENGTH = 2048;
|
||||||
constexpr u32 ORBIS_IME_DIALOG_MAX_TEXT_LENGTH = 2048;
|
constexpr u32 ORBIS_IME_DIALOG_MAX_TEXT_LENGTH = 2048;
|
||||||
|
|
||||||
|
template <typename E>
|
||||||
|
const std::underlying_type_t<E> generate_full_mask() {
|
||||||
|
static_assert(std::is_enum_v<E>, "E must be an enum type.");
|
||||||
|
static_assert(magic_enum::customize::enum_range<E>::is_flags,
|
||||||
|
"E must be marked as is_flags = true.");
|
||||||
|
|
||||||
|
using U = std::underlying_type_t<E>;
|
||||||
|
const auto values = magic_enum::enum_values<E>();
|
||||||
|
U mask = 0;
|
||||||
|
|
||||||
|
// Use index-based loop for better constexpr compatibility
|
||||||
|
for (std::size_t i = 0; i < values.size(); ++i) {
|
||||||
|
mask |= static_cast<U>(values[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mask;
|
||||||
|
}
|
||||||
|
|
||||||
enum class Error : u32 {
|
enum class Error : u32 {
|
||||||
OK = 0x0,
|
OK = 0x0,
|
||||||
|
|
||||||
|
// ImeDialog library
|
||||||
BUSY = 0x80bc0001,
|
BUSY = 0x80bc0001,
|
||||||
NOT_OPENED = 0x80bc0002,
|
NOT_OPENED = 0x80bc0002,
|
||||||
NO_MEMORY = 0x80bc0003,
|
NO_MEMORY = 0x80bc0003,
|
||||||
@ -46,6 +68,8 @@ enum class Error : u32 {
|
|||||||
INVALID_RESERVED = 0x80bc0032,
|
INVALID_RESERVED = 0x80bc0032,
|
||||||
INVALID_TIMING = 0x80bc0033,
|
INVALID_TIMING = 0x80bc0033,
|
||||||
INTERNAL = 0x80bc00ff,
|
INTERNAL = 0x80bc00ff,
|
||||||
|
|
||||||
|
// Ime library
|
||||||
DIALOG_INVALID_TITLE = 0x80bc0101,
|
DIALOG_INVALID_TITLE = 0x80bc0101,
|
||||||
DIALOG_NOT_RUNNING = 0x80bc0105,
|
DIALOG_NOT_RUNNING = 0x80bc0105,
|
||||||
DIALOG_NOT_FINISHED = 0x80bc0106,
|
DIALOG_NOT_FINISHED = 0x80bc0106,
|
||||||
@ -67,9 +91,44 @@ enum class OrbisImeOption : u32 {
|
|||||||
DISABLE_POSITION_ADJUSTMENT = 2048,
|
DISABLE_POSITION_ADJUSTMENT = 2048,
|
||||||
EXPANDED_PREEDIT_BUFFER = 4096,
|
EXPANDED_PREEDIT_BUFFER = 4096,
|
||||||
USE_JAPANESE_EISUU_KEY_AS_CAPSLOCK = 8192,
|
USE_JAPANESE_EISUU_KEY_AS_CAPSLOCK = 8192,
|
||||||
USE_2K_COORDINATES = 16384,
|
USE_OVER_2K_COORDINATES = 16384,
|
||||||
};
|
};
|
||||||
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeOption);
|
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeOption);
|
||||||
|
template <>
|
||||||
|
struct magic_enum::customize::enum_range<OrbisImeOption> {
|
||||||
|
static constexpr bool is_flags = true;
|
||||||
|
};
|
||||||
|
const u32 kValidImeOptionMask = generate_full_mask<OrbisImeOption>();
|
||||||
|
|
||||||
|
enum class OrbisImeExtOption : u32 {
|
||||||
|
DEFAULT = 0x00000000,
|
||||||
|
SET_PRIORITY = 0x00000002,
|
||||||
|
PRIORITY_FULL_WIDTH = 0x00000008,
|
||||||
|
PRIORITY_FIXED_PANEL = 0x00000010,
|
||||||
|
DISABLE_POINTER = 0x00000040,
|
||||||
|
ENABLE_ADDITIONAL_DICTIONARY = 0x00000080,
|
||||||
|
DISABLE_STARTUP_SE = 0x00000100,
|
||||||
|
DISABLE_LIST_FOR_EXT_KEYBOARD = 0x00000200,
|
||||||
|
HIDE_KEYPANEL_IF_EXT_KEYBOARD = 0x00000400,
|
||||||
|
INIT_EXT_KEYBOARD_MODE = 0x00000800,
|
||||||
|
|
||||||
|
ENABLE_ACCESSIBILITY = 0x00001000, // ImeDialog unly
|
||||||
|
ADDITIONAL_DICTIONARY_PRIORITY_MODE = 0x00004000, // ImeDialog only
|
||||||
|
};
|
||||||
|
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeExtOption);
|
||||||
|
|
||||||
|
constexpr u32 kValidImeExtOptionMask = static_cast<u32>(
|
||||||
|
OrbisImeExtOption::SET_PRIORITY | OrbisImeExtOption::PRIORITY_FULL_WIDTH |
|
||||||
|
OrbisImeExtOption::PRIORITY_FIXED_PANEL | OrbisImeExtOption::DISABLE_POINTER |
|
||||||
|
OrbisImeExtOption::ENABLE_ADDITIONAL_DICTIONARY | OrbisImeExtOption::DISABLE_STARTUP_SE |
|
||||||
|
OrbisImeExtOption::DISABLE_LIST_FOR_EXT_KEYBOARD |
|
||||||
|
OrbisImeExtOption::HIDE_KEYPANEL_IF_EXT_KEYBOARD | OrbisImeExtOption::INIT_EXT_KEYBOARD_MODE);
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct magic_enum::customize::enum_range<OrbisImeExtOption> {
|
||||||
|
static constexpr bool is_flags = true;
|
||||||
|
};
|
||||||
|
const u32 kValidImeDialogExtOptionMask = generate_full_mask<OrbisImeExtOption>();
|
||||||
|
|
||||||
enum class OrbisImeLanguage : u64 {
|
enum class OrbisImeLanguage : u64 {
|
||||||
DANISH = 0x0000000000000001,
|
DANISH = 0x0000000000000001,
|
||||||
@ -105,6 +164,112 @@ enum class OrbisImeLanguage : u64 {
|
|||||||
};
|
};
|
||||||
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeLanguage);
|
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeLanguage);
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct magic_enum::customize::enum_range<OrbisImeLanguage> {
|
||||||
|
static constexpr bool is_flags = true;
|
||||||
|
};
|
||||||
|
const u64 kValidOrbisImeLanguageMask = generate_full_mask<OrbisImeLanguage>();
|
||||||
|
|
||||||
|
enum class OrbisImeDisableDevice : u32 {
|
||||||
|
DEFAULT = 0x00000000,
|
||||||
|
CONTROLLER = 0x00000001,
|
||||||
|
EXT_KEYBOARD = 0x00000002,
|
||||||
|
REMOTE_OSK = 0x00000004,
|
||||||
|
};
|
||||||
|
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeDisableDevice);
|
||||||
|
template <>
|
||||||
|
struct magic_enum::customize::enum_range<OrbisImeDisableDevice> {
|
||||||
|
static constexpr bool is_flags = true;
|
||||||
|
};
|
||||||
|
const u32 kValidOrbisImeDisableDeviceMask = generate_full_mask<OrbisImeDisableDevice>();
|
||||||
|
|
||||||
|
enum class OrbisImeInputMethodState : u32 {
|
||||||
|
PREEDIT = 0x01000000,
|
||||||
|
SELECTED = 0x02000000,
|
||||||
|
NATIVE = 0x04000000,
|
||||||
|
NATIVE2 = 0x08000000,
|
||||||
|
FULL_WIDTH = 0x10000000,
|
||||||
|
};
|
||||||
|
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeInputMethodState);
|
||||||
|
template <>
|
||||||
|
struct magic_enum::customize::enum_range<OrbisImeInputMethodState> {
|
||||||
|
static constexpr bool is_flags = true;
|
||||||
|
};
|
||||||
|
const u32 kValidOrbisImeInputMethodStateMask = generate_full_mask<OrbisImeInputMethodState>();
|
||||||
|
|
||||||
|
enum class OrbisImeInitExtKeyboardMode : u32 {
|
||||||
|
ISABLE_ARABIC_INDIC_NUMERALS = 0x00000001,
|
||||||
|
ENABLE_FORMAT_CHARACTERS = 0x00000002,
|
||||||
|
INPUT_METHOD_STATE_NATIVE = 0x04000000,
|
||||||
|
INPUT_METHOD_STATE_NATIVE2 = 0x08000000,
|
||||||
|
INPUT_METHOD_STATE_FULL_WIDTH = 0x10000000,
|
||||||
|
};
|
||||||
|
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeInitExtKeyboardMode);
|
||||||
|
template <>
|
||||||
|
struct magic_enum::customize::enum_range<OrbisImeInitExtKeyboardMode> {
|
||||||
|
static constexpr bool is_flags = true;
|
||||||
|
};
|
||||||
|
const u32 kValidOrbisImeInitExtKeyboardModeMask = generate_full_mask<OrbisImeInitExtKeyboardMode>();
|
||||||
|
|
||||||
|
enum class OrbisImeKeycodeState : u32 {
|
||||||
|
KEYCODE_VALID = 0x00000001,
|
||||||
|
CHARACTER_VALID = 0x00000002,
|
||||||
|
WITH_IME = 0x00000004,
|
||||||
|
FROM_OSK = 0x00000008,
|
||||||
|
FROM_OSK_SHORTCUT = 0x00000010,
|
||||||
|
FROM_IME_OPERATION = 0x00000020,
|
||||||
|
REPLACE_CHARACTER = 0x00000040,
|
||||||
|
CONTINUOUS_EVENT = 0x00000080,
|
||||||
|
MODIFIER_L_CTRL = 0x00000100,
|
||||||
|
MODIFIER_L_SHIFT = 0x00000200,
|
||||||
|
MODIFIER_L_ALT = 0x00000400,
|
||||||
|
MODIFIER_L_GUI = 0x00000800,
|
||||||
|
MODIFIER_R_CTRL = 0x00001000,
|
||||||
|
MODIFIER_R_SHIFT = 0x00002000,
|
||||||
|
MODIFIER_R_ALT = 0x00004000,
|
||||||
|
MODIFIER_R_GUI = 0x00008000,
|
||||||
|
LED_NUM_LOCK = 0x00010000,
|
||||||
|
LED_CAPS_LOCK = 0x00020000,
|
||||||
|
LED_SCROLL_LOCK = 0x00040000,
|
||||||
|
RESERVED1 = 0x00080000,
|
||||||
|
RESERVED2 = 0x00100000,
|
||||||
|
FROM_IME_INPUT = 0x00200000,
|
||||||
|
};
|
||||||
|
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeKeycodeState);
|
||||||
|
template <>
|
||||||
|
struct magic_enum::customize::enum_range<OrbisImeKeycodeState> {
|
||||||
|
static constexpr bool is_flags = true;
|
||||||
|
};
|
||||||
|
const u32 kValidOrbisImeKeycodeStateMask = generate_full_mask<OrbisImeKeycodeState>();
|
||||||
|
|
||||||
|
enum class OrbisImeKeyboardOption : u32 {
|
||||||
|
Default = 0,
|
||||||
|
Repeat = 1,
|
||||||
|
RepeatEachKey = 2,
|
||||||
|
AddOsk = 4,
|
||||||
|
EffectiveWithIme = 8,
|
||||||
|
DisableResume = 16,
|
||||||
|
DisableCapslockWithoutShift = 32,
|
||||||
|
};
|
||||||
|
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeKeyboardOption)
|
||||||
|
template <>
|
||||||
|
struct magic_enum::customize::enum_range<OrbisImeKeyboardOption> {
|
||||||
|
static constexpr bool is_flags = true;
|
||||||
|
};
|
||||||
|
const u32 kValidOrbisImeKeyboardOptionMask = generate_full_mask<OrbisImeKeyboardOption>();
|
||||||
|
|
||||||
|
enum class OrbisImeKeyboardMode : u32 {
|
||||||
|
Auto = 0,
|
||||||
|
Manual = 1,
|
||||||
|
Alphabet = 0,
|
||||||
|
Native = 2,
|
||||||
|
Part = 4,
|
||||||
|
Katakana = 8,
|
||||||
|
Hkana = 16,
|
||||||
|
ArabicIndicNumerals = 32,
|
||||||
|
DisableFormatCharacters = 64,
|
||||||
|
};
|
||||||
|
|
||||||
enum class OrbisImeType : u32 {
|
enum class OrbisImeType : u32 {
|
||||||
Default = 0,
|
Default = 0,
|
||||||
BasicLatin = 1,
|
BasicLatin = 1,
|
||||||
@ -260,13 +425,13 @@ struct OrbisImeKeycode {
|
|||||||
char16_t character;
|
char16_t character;
|
||||||
u32 status;
|
u32 status;
|
||||||
OrbisImeKeyboardType type;
|
OrbisImeKeyboardType type;
|
||||||
s32 user_id; // Todo: switch to OrbisUserServiceUserId
|
Libraries::UserService::OrbisUserServiceUserId user_id;
|
||||||
u32 resource_id;
|
u32 resource_id;
|
||||||
Libraries::Rtc::OrbisRtcTick timestamp;
|
Libraries::Rtc::OrbisRtcTick timestamp;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct OrbisImeKeyboardResourceIdArray {
|
struct OrbisImeKeyboardResourceIdArray {
|
||||||
s32 user_id; // Todo: switch to OrbisUserServiceUserId
|
Libraries::UserService::OrbisUserServiceUserId user_id;
|
||||||
u32 resource_id[5];
|
u32 resource_id[5];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -322,17 +487,6 @@ using OrbisImeTextFilter = PS4_SYSV_ABI int (*)(char16_t* outText, u32* outTextL
|
|||||||
|
|
||||||
using OrbisImeEventHandler = PS4_SYSV_ABI void (*)(void* arg, const OrbisImeEvent* e);
|
using OrbisImeEventHandler = PS4_SYSV_ABI void (*)(void* arg, const OrbisImeEvent* e);
|
||||||
|
|
||||||
enum class OrbisImeKeyboardOption : u32 {
|
|
||||||
Default = 0,
|
|
||||||
Repeat = 1,
|
|
||||||
RepeatEachKey = 2,
|
|
||||||
AddOsk = 4,
|
|
||||||
EffectiveWithIme = 8,
|
|
||||||
DisableResume = 16,
|
|
||||||
DisableCapslockWithoutShift = 32,
|
|
||||||
};
|
|
||||||
DECLARE_ENUM_FLAG_OPERATORS(OrbisImeKeyboardOption)
|
|
||||||
|
|
||||||
struct OrbisImeKeyboardParam {
|
struct OrbisImeKeyboardParam {
|
||||||
OrbisImeKeyboardOption option;
|
OrbisImeKeyboardOption option;
|
||||||
s8 reserved1[4];
|
s8 reserved1[4];
|
||||||
@ -342,9 +496,9 @@ struct OrbisImeKeyboardParam {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct OrbisImeParam {
|
struct OrbisImeParam {
|
||||||
s32 user_id; // Todo: switch to OrbisUserServiceUserId
|
Libraries::UserService::OrbisUserServiceUserId user_id;
|
||||||
OrbisImeType type;
|
OrbisImeType type;
|
||||||
u64 supported_languages; // OrbisImeLanguage flags
|
OrbisImeLanguage supported_languages;
|
||||||
OrbisImeEnterLabel enter_label;
|
OrbisImeEnterLabel enter_label;
|
||||||
OrbisImeInputMethod input_method;
|
OrbisImeInputMethod input_method;
|
||||||
OrbisImeTextFilter filter;
|
OrbisImeTextFilter filter;
|
||||||
@ -369,9 +523,9 @@ struct OrbisImeCaret {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct OrbisImeDialogParam {
|
struct OrbisImeDialogParam {
|
||||||
s32 user_id;
|
Libraries::UserService::OrbisUserServiceUserId user_id;
|
||||||
OrbisImeType type;
|
OrbisImeType type;
|
||||||
u64 supported_languages; // OrbisImeLanguage flags
|
OrbisImeLanguage supported_languages;
|
||||||
OrbisImeEnterLabel enter_label;
|
OrbisImeEnterLabel enter_label;
|
||||||
OrbisImeInputMethod input_method;
|
OrbisImeInputMethod input_method;
|
||||||
OrbisImeTextFilter filter;
|
OrbisImeTextFilter filter;
|
||||||
@ -388,7 +542,7 @@ struct OrbisImeDialogParam {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct OrbisImeParamExtended {
|
struct OrbisImeParamExtended {
|
||||||
u32 option; // OrbisImeExtOption flags
|
OrbisImeExtOption option;
|
||||||
OrbisImeColor color_base;
|
OrbisImeColor color_base;
|
||||||
OrbisImeColor color_line;
|
OrbisImeColor color_line;
|
||||||
OrbisImeColor color_text_field;
|
OrbisImeColor color_text_field;
|
||||||
@ -401,7 +555,7 @@ struct OrbisImeParamExtended {
|
|||||||
OrbisImePanelPriority priority;
|
OrbisImePanelPriority priority;
|
||||||
char* additional_dictionary_path;
|
char* additional_dictionary_path;
|
||||||
OrbisImeExtKeyboardFilter ext_keyboard_filter;
|
OrbisImeExtKeyboardFilter ext_keyboard_filter;
|
||||||
u32 disable_device;
|
OrbisImeDisableDevice disable_device;
|
||||||
u32 ext_keyboard_mode;
|
u32 ext_keyboard_mode;
|
||||||
s8 reserved[60];
|
s8 reserved[60];
|
||||||
};
|
};
|
||||||
|
@ -149,20 +149,47 @@ OrbisImeDialogStatus PS4_SYSV_ABI sceImeDialogGetStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Error PS4_SYSV_ABI sceImeDialogInit(OrbisImeDialogParam* param, OrbisImeParamExtended* extended) {
|
Error PS4_SYSV_ABI sceImeDialogInit(OrbisImeDialogParam* param, OrbisImeParamExtended* extended) {
|
||||||
LOG_INFO(Lib_ImeDialog, ">> sceImeDialogInit: entering, param={}, extended={}",
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: entering, param={}, extended={}",
|
||||||
static_cast<void*>(param), static_cast<void*>(extended));
|
static_cast<void*>(param), static_cast<void*>(extended));
|
||||||
if (g_ime_dlg_status != OrbisImeDialogStatus::None) {
|
|
||||||
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: busy (status=%u)", (u32)g_ime_dlg_status);
|
|
||||||
return Error::BUSY;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (param == nullptr) {
|
if (param == nullptr) {
|
||||||
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: param is null");
|
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: param is null");
|
||||||
return Error::INVALID_ADDRESS;
|
return Error::INVALID_ADDRESS;
|
||||||
|
} else {
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.user_id = {}",
|
||||||
|
static_cast<u32>(param->user_id));
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.type = {}", static_cast<u32>(param->type));
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.supported_languages = 0x{:X}",
|
||||||
|
static_cast<u64>(param->supported_languages));
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.enter_label = {}",
|
||||||
|
static_cast<u32>(param->enter_label));
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.input_method = {}",
|
||||||
|
static_cast<u32>(param->input_method));
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.filter = {}", (void*)param->filter);
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.option = 0x{:X}",
|
||||||
|
static_cast<u32>(param->option));
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.max_text_length = {}",
|
||||||
|
param->max_text_length);
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.input_text_buffer = {}",
|
||||||
|
(void*)param->input_text_buffer);
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.posx = {}", param->posx);
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.posy = {}", param->posy);
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.horizontal_alignment = {}",
|
||||||
|
static_cast<u32>(param->horizontal_alignment));
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.vertical_alignment = {}",
|
||||||
|
static_cast<u32>(param->vertical_alignment));
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.placeholder = {}",
|
||||||
|
param->placeholder ? "<non-null>" : "NULL");
|
||||||
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: param.title = {}",
|
||||||
|
param->title ? "<non-null>" : "NULL");
|
||||||
|
}
|
||||||
|
if (g_ime_dlg_status != OrbisImeDialogStatus::None) {
|
||||||
|
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: busy (status={})", (u32)g_ime_dlg_status);
|
||||||
|
return Error::BUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!magic_enum::enum_contains(param->type)) {
|
if (!magic_enum::enum_contains(param->type)) {
|
||||||
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid param->type=%u", (u32)param->type);
|
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid param->type={}", (u32)param->type);
|
||||||
return Error::INVALID_ADDRESS;
|
return Error::INVALID_ADDRESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,14 +197,16 @@ Error PS4_SYSV_ABI sceImeDialogInit(OrbisImeDialogParam* param, OrbisImeParamExt
|
|||||||
// TODO: do correct param->supportedLanguages validation
|
// TODO: do correct param->supportedLanguages validation
|
||||||
|
|
||||||
if (param->posx < 0.0f ||
|
if (param->posx < 0.0f ||
|
||||||
param->posx >= MAX_X_POSITIONS[False(param->option & OrbisImeOption::USE_2K_COORDINATES)]) {
|
param->posx >=
|
||||||
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid posx=%f", param->posx);
|
MAX_X_POSITIONS[False(param->option & OrbisImeOption::USE_OVER_2K_COORDINATES)]) {
|
||||||
|
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid posx={}", param->posx);
|
||||||
return Error::INVALID_POSX;
|
return Error::INVALID_POSX;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (param->posy < 0.0f ||
|
if (param->posy < 0.0f ||
|
||||||
param->posy >= MAX_Y_POSITIONS[False(param->option & OrbisImeOption::USE_2K_COORDINATES)]) {
|
param->posy >=
|
||||||
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid posy=%f", param->posy);
|
MAX_Y_POSITIONS[False(param->option & OrbisImeOption::USE_OVER_2K_COORDINATES)]) {
|
||||||
|
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid posy={}", param->posy);
|
||||||
return Error::INVALID_POSY;
|
return Error::INVALID_POSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +221,7 @@ Error PS4_SYSV_ABI sceImeDialogInit(OrbisImeDialogParam* param, OrbisImeParamExt
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!IsValidOption(param->option, param->type)) {
|
if (!IsValidOption(param->option, param->type)) {
|
||||||
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid option=0x%X for type=%u",
|
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid option=0x{:X}for type={}",
|
||||||
static_cast<u32>(param->option), (u32)param->type);
|
static_cast<u32>(param->option), (u32)param->type);
|
||||||
return Error::INVALID_PARAM;
|
return Error::INVALID_PARAM;
|
||||||
}
|
}
|
||||||
@ -204,25 +233,27 @@ Error PS4_SYSV_ABI sceImeDialogInit(OrbisImeDialogParam* param, OrbisImeParamExt
|
|||||||
|
|
||||||
if (extended) {
|
if (extended) {
|
||||||
if (!magic_enum::enum_contains(extended->priority)) {
|
if (!magic_enum::enum_contains(extended->priority)) {
|
||||||
LOG_INFO(Lib_ImeDialog, "Invalid extended->priority");
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: Invalid extended->priority");
|
||||||
return Error::INVALID_EXTENDED;
|
return Error::INVALID_EXTENDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: do correct extended->option validation
|
// TODO: do correct extended->option validation
|
||||||
|
|
||||||
if ((extended->ext_keyboard_mode & 0xe3fffffc) != 0) {
|
if ((extended->ext_keyboard_mode & 0xe3fffffc) != 0) {
|
||||||
LOG_INFO(Lib_ImeDialog, "Invalid extended->extKeyboardMode");
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: Invalid extended->extKeyboardMode");
|
||||||
return Error::INVALID_EXTENDED;
|
return Error::INVALID_EXTENDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extended->disable_device > 7) {
|
if (static_cast<u32>(extended->disable_device) & ~kValidOrbisImeDisableDeviceMask) {
|
||||||
LOG_INFO(Lib_ImeDialog, "Invalid extended->disableDevice");
|
LOG_ERROR(Lib_ImeDialog,
|
||||||
|
"sceImeDialogInit: disable_device has invalid bits set (0x{:X})",
|
||||||
|
static_cast<u32>(extended->disable_device));
|
||||||
return Error::INVALID_EXTENDED;
|
return Error::INVALID_EXTENDED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (param->max_text_length == 0 || param->max_text_length > ORBIS_IME_MAX_TEXT_LENGTH) {
|
if (param->max_text_length == 0 || param->max_text_length > ORBIS_IME_MAX_TEXT_LENGTH) {
|
||||||
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid max_text_length=%u",
|
LOG_ERROR(Lib_ImeDialog, "sceImeDialogInit: invalid max_text_length={}",
|
||||||
param->max_text_length);
|
param->max_text_length);
|
||||||
return Error::INVALID_MAX_TEXT_LENGTH;
|
return Error::INVALID_MAX_TEXT_LENGTH;
|
||||||
}
|
}
|
||||||
@ -238,7 +269,7 @@ Error PS4_SYSV_ABI sceImeDialogInit(OrbisImeDialogParam* param, OrbisImeParamExt
|
|||||||
g_ime_dlg_status = OrbisImeDialogStatus::Running;
|
g_ime_dlg_status = OrbisImeDialogStatus::Running;
|
||||||
g_ime_dlg_ui = ImeDialogUi(&g_ime_dlg_state, &g_ime_dlg_status, &g_ime_dlg_result);
|
g_ime_dlg_ui = ImeDialogUi(&g_ime_dlg_state, &g_ime_dlg_status, &g_ime_dlg_result);
|
||||||
|
|
||||||
LOG_INFO(Lib_ImeDialog, "<< sceImeDialogInit: successful, status now=Running");
|
LOG_INFO(Lib_ImeDialog, "sceImeDialogInit: successful, status now=Running");
|
||||||
return Error::OK;
|
return Error::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +311,7 @@ Error PS4_SYSV_ABI sceImeDialogTerm() {
|
|||||||
return Error::OK;
|
return Error::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceImeDialog(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("oBmw4xrmfKs", "libSceImeDialog", 1, "libSceImeDialog", 1, 1, sceImeDialogAbort);
|
LIB_FUNCTION("oBmw4xrmfKs", "libSceImeDialog", 1, "libSceImeDialog", 1, 1, sceImeDialogAbort);
|
||||||
LIB_FUNCTION("bX4H+sxPI-o", "libSceImeDialog", 1, "libSceImeDialog", 1, 1,
|
LIB_FUNCTION("bX4H+sxPI-o", "libSceImeDialog", 1, "libSceImeDialog", 1, 1,
|
||||||
sceImeDialogForceClose);
|
sceImeDialogForceClose);
|
||||||
|
@ -47,5 +47,5 @@ int PS4_SYSV_ABI sceImeDialogInitInternal3();
|
|||||||
int PS4_SYSV_ABI sceImeDialogSetPanelPosition();
|
int PS4_SYSV_ABI sceImeDialogSetPanelPosition();
|
||||||
Error PS4_SYSV_ABI sceImeDialogTerm();
|
Error PS4_SYSV_ABI sceImeDialogTerm();
|
||||||
|
|
||||||
void RegisterlibSceImeDialog(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::ImeDialog
|
} // namespace Libraries::ImeDialog
|
||||||
|
@ -197,7 +197,7 @@ s32 PS4_SYSV_ABI sceJpegEncQueryMemorySize(const OrbisJpegEncCreateParam* param)
|
|||||||
return ORBIS_JPEG_ENC_MINIMUM_MEMORY_SIZE;
|
return ORBIS_JPEG_ENC_MINIMUM_MEMORY_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceJpegEnc(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("K+rocojkr-I", "libSceJpegEnc", 1, "libSceJpegEnc", 1, 1, sceJpegEncCreate);
|
LIB_FUNCTION("K+rocojkr-I", "libSceJpegEnc", 1, "libSceJpegEnc", 1, 1, sceJpegEncCreate);
|
||||||
LIB_FUNCTION("j1LyMdaM+C0", "libSceJpegEnc", 1, "libSceJpegEnc", 1, 1, sceJpegEncDelete);
|
LIB_FUNCTION("j1LyMdaM+C0", "libSceJpegEnc", 1, "libSceJpegEnc", 1, 1, sceJpegEncDelete);
|
||||||
LIB_FUNCTION("QbrU0cUghEM", "libSceJpegEnc", 1, "libSceJpegEnc", 1, 1, sceJpegEncEncode);
|
LIB_FUNCTION("QbrU0cUghEM", "libSceJpegEnc", 1, "libSceJpegEnc", 1, 1, sceJpegEncEncode);
|
||||||
|
@ -80,5 +80,5 @@ s32 PS4_SYSV_ABI sceJpegEncEncode(OrbisJpegEncHandle handle, const OrbisJpegEncE
|
|||||||
OrbisJpegEncOutputInfo* output_info);
|
OrbisJpegEncOutputInfo* output_info);
|
||||||
s32 PS4_SYSV_ABI sceJpegEncQueryMemorySize(const OrbisJpegEncCreateParam* param);
|
s32 PS4_SYSV_ABI sceJpegEncQueryMemorySize(const OrbisJpegEncCreateParam* param);
|
||||||
|
|
||||||
void RegisterlibSceJpegEnc(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::JpegEnc
|
} // namespace Libraries::JpegEnc
|
||||||
|
@ -118,14 +118,16 @@ s32 PS4_SYSV_ABI open(const char* raw_path, s32 flags, u16 mode) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (read_only) {
|
if (!exists) {
|
||||||
// Can't create files in a read only directory
|
if (read_only) {
|
||||||
h->DeleteHandle(handle);
|
// Can't create files in a read only directory
|
||||||
*__Error() = POSIX_EROFS;
|
h->DeleteHandle(handle);
|
||||||
return -1;
|
*__Error() = POSIX_EROFS;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
// Create a file if it doesn't exist
|
||||||
|
Common::FS::IOFile out(file->m_host_name, Common::FS::FileAccessMode::Write);
|
||||||
}
|
}
|
||||||
// Create a file if it doesn't exist
|
|
||||||
Common::FS::IOFile out(file->m_host_name, Common::FS::FileAccessMode::Write);
|
|
||||||
} else if (!exists) {
|
} else if (!exists) {
|
||||||
// If we're not creating a file, and it doesn't exist, return ENOENT
|
// If we're not creating a file, and it doesn't exist, return ENOENT
|
||||||
h->DeleteHandle(handle);
|
h->DeleteHandle(handle);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/debug.h"
|
#include "common/debug.h"
|
||||||
|
#include "common/elf_info.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "common/polyfill_thread.h"
|
#include "common/polyfill_thread.h"
|
||||||
#include "common/thread.h"
|
#include "common/thread.h"
|
||||||
@ -243,7 +244,20 @@ s32 PS4_SYSV_ABI sceKernelSetGPO() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterKernel(Core::Loader::SymbolsResolver* sym) {
|
s32 PS4_SYSV_ABI sceKernelGetSystemSwVersion(SwVersionStruct* ret) {
|
||||||
|
if (ret == nullptr) {
|
||||||
|
return ORBIS_OK; // but why?
|
||||||
|
}
|
||||||
|
ASSERT(ret->struct_size == 40);
|
||||||
|
u32 fake_fw = Common::ElfInfo::Instance().RawFirmwareVer();
|
||||||
|
ret->hex_representation = fake_fw;
|
||||||
|
std::snprintf(ret->text_representation, 28, "%2x.%03x.%03x", fake_fw >> 0x18,
|
||||||
|
fake_fw >> 0xc & 0xfff, fake_fw & 0xfff); // why %2x?
|
||||||
|
LOG_INFO(Lib_Kernel, "called, returned sw version: {}", ret->text_representation);
|
||||||
|
return ORBIS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
service_thread = std::jthread{KernelServiceThread};
|
service_thread = std::jthread{KernelServiceThread};
|
||||||
|
|
||||||
Libraries::Kernel::RegisterFileSystem(sym);
|
Libraries::Kernel::RegisterFileSystem(sym);
|
||||||
@ -258,6 +272,7 @@ void RegisterKernel(Core::Loader::SymbolsResolver* sym) {
|
|||||||
Libraries::Kernel::RegisterDebug(sym);
|
Libraries::Kernel::RegisterDebug(sym);
|
||||||
|
|
||||||
LIB_OBJ("f7uOxY9mM1U", "libkernel", 1, "libkernel", 1, 1, &g_stack_chk_guard);
|
LIB_OBJ("f7uOxY9mM1U", "libkernel", 1, "libkernel", 1, 1, &g_stack_chk_guard);
|
||||||
|
LIB_FUNCTION("Mv1zUObHvXI", "libkernel", 1, "libkernel", 1, 1, sceKernelGetSystemSwVersion);
|
||||||
LIB_FUNCTION("PfccT7qURYE", "libkernel", 1, "libkernel", 1, 1, kernel_ioctl);
|
LIB_FUNCTION("PfccT7qURYE", "libkernel", 1, "libkernel", 1, 1, kernel_ioctl);
|
||||||
LIB_FUNCTION("JGfTMBOdUJo", "libkernel", 1, "libkernel", 1, 1, sceKernelGetFsSandboxRandomWord);
|
LIB_FUNCTION("JGfTMBOdUJo", "libkernel", 1, "libkernel", 1, 1, sceKernelGetFsSandboxRandomWord);
|
||||||
LIB_FUNCTION("6xVpy0Fdq+I", "libkernel", 1, "libkernel", 1, 1, _sigprocmask);
|
LIB_FUNCTION("6xVpy0Fdq+I", "libkernel", 1, "libkernel", 1, 1, _sigprocmask);
|
||||||
|
@ -35,6 +35,12 @@ struct OrbisWrapperImpl<PS4_SYSV_ABI R (*)(Args...), f> {
|
|||||||
|
|
||||||
s32* PS4_SYSV_ABI __Error();
|
s32* PS4_SYSV_ABI __Error();
|
||||||
|
|
||||||
void RegisterKernel(Core::Loader::SymbolsResolver* sym);
|
struct SwVersionStruct {
|
||||||
|
u64 struct_size;
|
||||||
|
char text_representation[0x1c];
|
||||||
|
u32 hex_representation;
|
||||||
|
};
|
||||||
|
|
||||||
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
|
|
||||||
} // namespace Libraries::Kernel
|
} // namespace Libraries::Kernel
|
||||||
|
@ -261,7 +261,7 @@ s32 PS4_SYSV_ABI scePngDecQueryMemorySize(const OrbisPngDecCreateParam* param) {
|
|||||||
return sizeof(PngHandler);
|
return sizeof(PngHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibScePngDec(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("m0uW+8pFyaw", "libScePngDec", 1, "libScePngDec", 1, 1, scePngDecCreate);
|
LIB_FUNCTION("m0uW+8pFyaw", "libScePngDec", 1, "libScePngDec", 1, 1, scePngDecCreate);
|
||||||
LIB_FUNCTION("WC216DD3El4", "libScePngDec", 1, "libScePngDec", 1, 1, scePngDecDecode);
|
LIB_FUNCTION("WC216DD3El4", "libScePngDec", 1, "libScePngDec", 1, 1, scePngDecDecode);
|
||||||
LIB_FUNCTION("cJ--1xAbj-I", "libScePngDec", 1, "libScePngDec", 1, 1,
|
LIB_FUNCTION("cJ--1xAbj-I", "libScePngDec", 1, "libScePngDec", 1, 1,
|
||||||
|
@ -79,5 +79,5 @@ s32 PS4_SYSV_ABI scePngDecParseHeader(const OrbisPngDecParseParam* param,
|
|||||||
OrbisPngDecImageInfo* imageInfo);
|
OrbisPngDecImageInfo* imageInfo);
|
||||||
s32 PS4_SYSV_ABI scePngDecQueryMemorySize(const OrbisPngDecCreateParam* param);
|
s32 PS4_SYSV_ABI scePngDecQueryMemorySize(const OrbisPngDecCreateParam* param);
|
||||||
|
|
||||||
void RegisterlibScePngDec(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::PngDec
|
} // namespace Libraries::PngDec
|
||||||
|
@ -70,66 +70,66 @@ namespace Libraries {
|
|||||||
|
|
||||||
void InitHLELibs(Core::Loader::SymbolsResolver* sym) {
|
void InitHLELibs(Core::Loader::SymbolsResolver* sym) {
|
||||||
LOG_INFO(Lib_Kernel, "Initializing HLE libraries");
|
LOG_INFO(Lib_Kernel, "Initializing HLE libraries");
|
||||||
Libraries::Kernel::RegisterKernel(sym);
|
Libraries::Kernel::RegisterLib(sym);
|
||||||
Libraries::GnmDriver::RegisterlibSceGnmDriver(sym);
|
Libraries::GnmDriver::RegisterLib(sym);
|
||||||
Libraries::VideoOut::RegisterLib(sym);
|
Libraries::VideoOut::RegisterLib(sym);
|
||||||
Libraries::UserService::RegisterlibSceUserService(sym);
|
Libraries::UserService::RegisterLib(sym);
|
||||||
Libraries::SystemService::RegisterlibSceSystemService(sym);
|
Libraries::SystemService::RegisterLib(sym);
|
||||||
Libraries::CommonDialog::RegisterlibSceCommonDialog(sym);
|
Libraries::CommonDialog::RegisterLib(sym);
|
||||||
Libraries::MsgDialog::RegisterlibSceMsgDialog(sym);
|
Libraries::MsgDialog::RegisterLib(sym);
|
||||||
Libraries::AudioOut::RegisterlibSceAudioOut(sym);
|
Libraries::AudioOut::RegisterLib(sym);
|
||||||
Libraries::Http::RegisterlibSceHttp(sym);
|
Libraries::Http::RegisterLib(sym);
|
||||||
Libraries::Http2::RegisterlibSceHttp2(sym);
|
Libraries::Http2::RegisterLib(sym);
|
||||||
Libraries::Net::RegisterlibSceNet(sym);
|
Libraries::Net::RegisterLib(sym);
|
||||||
Libraries::NetCtl::RegisterlibSceNetCtl(sym);
|
Libraries::NetCtl::RegisterLib(sym);
|
||||||
Libraries::SaveData::RegisterlibSceSaveData(sym);
|
Libraries::SaveData::RegisterLib(sym);
|
||||||
Libraries::SaveData::Dialog::RegisterlibSceSaveDataDialog(sym);
|
Libraries::SaveData::Dialog::RegisterLib(sym);
|
||||||
Libraries::Ssl::RegisterlibSceSsl(sym);
|
Libraries::Ssl::RegisterLib(sym);
|
||||||
Libraries::Ssl2::RegisterlibSceSsl2(sym);
|
Libraries::Ssl2::RegisterLib(sym);
|
||||||
Libraries::SysModule::RegisterlibSceSysmodule(sym);
|
Libraries::SysModule::RegisterLib(sym);
|
||||||
Libraries::Posix::Registerlibsceposix(sym);
|
Libraries::Posix::RegisterLib(sym);
|
||||||
Libraries::AudioIn::RegisterlibSceAudioIn(sym);
|
Libraries::AudioIn::RegisterLib(sym);
|
||||||
Libraries::NpCommon::RegisterlibSceNpCommon(sym);
|
Libraries::NpCommon::RegisterLib(sym);
|
||||||
Libraries::NpManager::RegisterlibSceNpManager(sym);
|
Libraries::NpManager::RegisterLib(sym);
|
||||||
Libraries::NpScore::RegisterlibSceNpScore(sym);
|
Libraries::NpScore::RegisterLib(sym);
|
||||||
Libraries::NpTrophy::RegisterlibSceNpTrophy(sym);
|
Libraries::NpTrophy::RegisterLib(sym);
|
||||||
Libraries::NpWebApi::RegisterlibSceNpWebApi(sym);
|
Libraries::NpWebApi::RegisterLib(sym);
|
||||||
Libraries::NpAuth::RegisterlibSceNpAuth(sym);
|
Libraries::NpAuth::RegisterLib(sym);
|
||||||
Libraries::ScreenShot::RegisterlibSceScreenShot(sym);
|
Libraries::ScreenShot::RegisterLib(sym);
|
||||||
Libraries::AppContent::RegisterlibSceAppContent(sym);
|
Libraries::AppContent::RegisterLib(sym);
|
||||||
Libraries::PngDec::RegisterlibScePngDec(sym);
|
Libraries::PngDec::RegisterLib(sym);
|
||||||
Libraries::PlayGo::RegisterlibScePlayGo(sym);
|
Libraries::PlayGo::RegisterLib(sym);
|
||||||
Libraries::PlayGo::Dialog::RegisterlibScePlayGoDialog(sym);
|
Libraries::PlayGo::Dialog::RegisterLib(sym);
|
||||||
Libraries::Random::RegisterlibSceRandom(sym);
|
Libraries::Random::RegisterLib(sym);
|
||||||
Libraries::Usbd::RegisterlibSceUsbd(sym);
|
Libraries::Usbd::RegisterLib(sym);
|
||||||
Libraries::Pad::RegisterlibScePad(sym);
|
Libraries::Pad::RegisterLib(sym);
|
||||||
Libraries::Ajm::RegisterlibSceAjm(sym);
|
Libraries::Ajm::RegisterLib(sym);
|
||||||
Libraries::ErrorDialog::RegisterlibSceErrorDialog(sym);
|
Libraries::ErrorDialog::RegisterLib(sym);
|
||||||
Libraries::ImeDialog::RegisterlibSceImeDialog(sym);
|
Libraries::ImeDialog::RegisterLib(sym);
|
||||||
Libraries::AvPlayer::RegisterlibSceAvPlayer(sym);
|
Libraries::AvPlayer::RegisterLib(sym);
|
||||||
Libraries::Vdec2::RegisterlibSceVdec2(sym);
|
Libraries::Vdec2::RegisterLib(sym);
|
||||||
Libraries::Audio3d::RegisterlibSceAudio3d(sym);
|
Libraries::Audio3d::RegisterLib(sym);
|
||||||
Libraries::Ime::RegisterlibSceIme(sym);
|
Libraries::Ime::RegisterLib(sym);
|
||||||
Libraries::GameLiveStreaming::RegisterlibSceGameLiveStreaming(sym);
|
Libraries::GameLiveStreaming::RegisterLib(sym);
|
||||||
Libraries::SharePlay::RegisterlibSceSharePlay(sym);
|
Libraries::SharePlay::RegisterLib(sym);
|
||||||
Libraries::Remoteplay::RegisterlibSceRemoteplay(sym);
|
Libraries::Remoteplay::RegisterLib(sym);
|
||||||
Libraries::Videodec::RegisterlibSceVideodec(sym);
|
Libraries::Videodec::RegisterLib(sym);
|
||||||
Libraries::RazorCpu::RegisterlibSceRazorCpu(sym);
|
Libraries::RazorCpu::RegisterLib(sym);
|
||||||
Libraries::Move::RegisterlibSceMove(sym);
|
Libraries::Move::RegisterLib(sym);
|
||||||
Libraries::Fiber::RegisterlibSceFiber(sym);
|
Libraries::Fiber::RegisterLib(sym);
|
||||||
Libraries::JpegEnc::RegisterlibSceJpegEnc(sym);
|
Libraries::JpegEnc::RegisterLib(sym);
|
||||||
Libraries::Mouse::RegisterlibSceMouse(sym);
|
Libraries::Mouse::RegisterLib(sym);
|
||||||
Libraries::WebBrowserDialog::RegisterlibSceWebBrowserDialog(sym);
|
Libraries::WebBrowserDialog::RegisterLib(sym);
|
||||||
Libraries::NpParty::RegisterlibSceNpParty(sym);
|
Libraries::NpParty::RegisterLib(sym);
|
||||||
Libraries::Zlib::RegisterlibSceZlib(sym);
|
Libraries::Zlib::RegisterLib(sym);
|
||||||
Libraries::Hmd::RegisterlibSceHmd(sym);
|
Libraries::Hmd::RegisterLib(sym);
|
||||||
Libraries::DiscMap::RegisterlibSceDiscMap(sym);
|
Libraries::DiscMap::RegisterLib(sym);
|
||||||
Libraries::Ulobjmgr::RegisterlibSceUlobjmgr(sym);
|
Libraries::Ulobjmgr::RegisterLib(sym);
|
||||||
Libraries::SigninDialog::RegisterlibSceSigninDialog(sym);
|
Libraries::SigninDialog::RegisterLib(sym);
|
||||||
Libraries::Camera::RegisterlibSceCamera(sym);
|
Libraries::Camera::RegisterLib(sym);
|
||||||
Libraries::CompanionHttpd::RegisterlibSceCompanionHttpd(sym);
|
Libraries::CompanionHttpd::RegisterLib(sym);
|
||||||
Libraries::CompanionUtil::RegisterlibSceCompanionUtil(sym);
|
Libraries::CompanionUtil::RegisterLib(sym);
|
||||||
Libraries::Voice::RegisterlibSceVoice(sym);
|
Libraries::Voice::RegisterLib(sym);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Libraries
|
} // namespace Libraries
|
||||||
|
@ -79,7 +79,7 @@ int PS4_SYSV_ABI sceMouseSetProcessPrivilege() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceMouse(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("cAnT0Rw-IwU", "libSceMouse", 1, "libSceMouse", 1, 1, sceMouseClose);
|
LIB_FUNCTION("cAnT0Rw-IwU", "libSceMouse", 1, "libSceMouse", 1, 1, sceMouseClose);
|
||||||
LIB_FUNCTION("Ymyy1HSSJLQ", "libSceMouse", 1, "libSceMouse", 1, 1, sceMouseConnectPort);
|
LIB_FUNCTION("Ymyy1HSSJLQ", "libSceMouse", 1, "libSceMouse", 1, 1, sceMouseConnectPort);
|
||||||
LIB_FUNCTION("BRXOoXQtb+k", "libSceMouse", 1, "libSceMouse", 1, 1, sceMouseDebugGetDeviceId);
|
LIB_FUNCTION("BRXOoXQtb+k", "libSceMouse", 1, "libSceMouse", 1, 1, sceMouseDebugGetDeviceId);
|
||||||
|
@ -25,5 +25,5 @@ int PS4_SYSV_ABI sceMouseSetHandType();
|
|||||||
int PS4_SYSV_ABI sceMouseSetPointerSpeed();
|
int PS4_SYSV_ABI sceMouseSetPointerSpeed();
|
||||||
int PS4_SYSV_ABI sceMouseSetProcessPrivilege();
|
int PS4_SYSV_ABI sceMouseSetProcessPrivilege();
|
||||||
|
|
||||||
void RegisterlibSceMouse(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Mouse
|
} // namespace Libraries::Mouse
|
@ -38,7 +38,7 @@ int PS4_SYSV_ABI sceMoveInit() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceMove(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("HzC60MfjJxU", "libSceMove", 1, "libSceMove", 1, 1, sceMoveOpen);
|
LIB_FUNCTION("HzC60MfjJxU", "libSceMove", 1, "libSceMove", 1, 1, sceMoveOpen);
|
||||||
LIB_FUNCTION("GWXTyxs4QbE", "libSceMove", 1, "libSceMove", 1, 1, sceMoveGetDeviceInfo);
|
LIB_FUNCTION("GWXTyxs4QbE", "libSceMove", 1, "libSceMove", 1, 1, sceMoveGetDeviceInfo);
|
||||||
LIB_FUNCTION("ttU+JOhShl4", "libSceMove", 1, "libSceMove", 1, 1, sceMoveReadStateLatest);
|
LIB_FUNCTION("ttU+JOhShl4", "libSceMove", 1, "libSceMove", 1, 1, sceMoveReadStateLatest);
|
||||||
|
@ -17,5 +17,5 @@ int PS4_SYSV_ABI sceMoveReadStateRecent();
|
|||||||
int PS4_SYSV_ABI sceMoveTerm();
|
int PS4_SYSV_ABI sceMoveTerm();
|
||||||
int PS4_SYSV_ABI sceMoveInit();
|
int PS4_SYSV_ABI sceMoveInit();
|
||||||
|
|
||||||
void RegisterlibSceMove(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Move
|
} // namespace Libraries::Move
|
@ -847,7 +847,7 @@ int PS4_SYSV_ABI sceHttpWaitRequest() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceHttp(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("hvG6GfBMXg8", "libSceHttp", 1, "libSceHttp", 1, 1, sceHttpAbortRequest);
|
LIB_FUNCTION("hvG6GfBMXg8", "libSceHttp", 1, "libSceHttp", 1, 1, sceHttpAbortRequest);
|
||||||
LIB_FUNCTION("JKl06ZIAl6A", "libSceHttp", 1, "libSceHttp", 1, 1, sceHttpAbortRequestForce);
|
LIB_FUNCTION("JKl06ZIAl6A", "libSceHttp", 1, "libSceHttp", 1, 1, sceHttpAbortRequestForce);
|
||||||
LIB_FUNCTION("sWQiqKvYTVA", "libSceHttp", 1, "libSceHttp", 1, 1, sceHttpAbortWaitRequest);
|
LIB_FUNCTION("sWQiqKvYTVA", "libSceHttp", 1, "libSceHttp", 1, 1, sceHttpAbortWaitRequest);
|
||||||
|
@ -141,5 +141,5 @@ int PS4_SYSV_ABI sceHttpUriSweepPath(char* dst, const char* src, size_t srcSize)
|
|||||||
int PS4_SYSV_ABI sceHttpUriUnescape(char* out, size_t* require, size_t prepare, const char* in);
|
int PS4_SYSV_ABI sceHttpUriUnescape(char* out, size_t* require, size_t prepare, const char* in);
|
||||||
int PS4_SYSV_ABI sceHttpWaitRequest();
|
int PS4_SYSV_ABI sceHttpWaitRequest();
|
||||||
|
|
||||||
void RegisterlibSceHttp(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Http
|
} // namespace Libraries::Http
|
||||||
|
@ -289,7 +289,7 @@ int PS4_SYSV_ABI sceHttp2WaitAsync() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceHttp2(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("AS45QoYHjc4", "libSceHttp2", 1, "libSceHttp2", 1, 1, _Z5dummyv);
|
LIB_FUNCTION("AS45QoYHjc4", "libSceHttp2", 1, "libSceHttp2", 1, 1, _Z5dummyv);
|
||||||
LIB_FUNCTION("IZ-qjhRqvjk", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2AbortRequest);
|
LIB_FUNCTION("IZ-qjhRqvjk", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2AbortRequest);
|
||||||
LIB_FUNCTION("flPxnowtvWY", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2AddCookie);
|
LIB_FUNCTION("flPxnowtvWY", "libSceHttp2", 1, "libSceHttp2", 1, 1, sceHttp2AddCookie);
|
||||||
|
@ -68,5 +68,5 @@ int PS4_SYSV_ABI sceHttp2SslEnableOption();
|
|||||||
int PS4_SYSV_ABI sceHttp2Term();
|
int PS4_SYSV_ABI sceHttp2Term();
|
||||||
int PS4_SYSV_ABI sceHttp2WaitAsync();
|
int PS4_SYSV_ABI sceHttp2WaitAsync();
|
||||||
|
|
||||||
void RegisterlibSceHttp2(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Http2
|
} // namespace Libraries::Http2
|
@ -1942,7 +1942,7 @@ int PS4_SYSV_ABI sceNetEmulationSet() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNet(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("ZRAJo-A-ukc", "libSceNet", 1, "libSceNet", 1, 1, in6addr_any);
|
LIB_FUNCTION("ZRAJo-A-ukc", "libSceNet", 1, "libSceNet", 1, 1, in6addr_any);
|
||||||
LIB_FUNCTION("XCuA-GqjA-k", "libSceNet", 1, "libSceNet", 1, 1, in6addr_loopback);
|
LIB_FUNCTION("XCuA-GqjA-k", "libSceNet", 1, "libSceNet", 1, 1, in6addr_loopback);
|
||||||
LIB_FUNCTION("VZgoeBxPXUQ", "libSceNet", 1, "libSceNet", 1, 1, sce_net_dummy);
|
LIB_FUNCTION("VZgoeBxPXUQ", "libSceNet", 1, "libSceNet", 1, 1, sce_net_dummy);
|
||||||
|
@ -336,5 +336,5 @@ int PS4_SYSV_ABI Func_0E707A589F751C68();
|
|||||||
int PS4_SYSV_ABI sceNetEmulationGet();
|
int PS4_SYSV_ABI sceNetEmulationGet();
|
||||||
int PS4_SYSV_ABI sceNetEmulationSet();
|
int PS4_SYSV_ABI sceNetEmulationSet();
|
||||||
|
|
||||||
void RegisterlibSceNet(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Net
|
} // namespace Libraries::Net
|
||||||
|
@ -547,7 +547,7 @@ int PS4_SYSV_ABI sceNetCtlApRpUnregisterCallback() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNetCtl(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("XtClSOC1xcU", "libSceNetBwe", 1, "libSceNetCtl", 1, 1,
|
LIB_FUNCTION("XtClSOC1xcU", "libSceNetBwe", 1, "libSceNetCtl", 1, 1,
|
||||||
sceNetBweCheckCallbackIpcInt);
|
sceNetBweCheckCallbackIpcInt);
|
||||||
LIB_FUNCTION("YALqoY4aeY0", "libSceNetBwe", 1, "libSceNetCtl", 1, 1, sceNetBweClearEventIpcInt);
|
LIB_FUNCTION("YALqoY4aeY0", "libSceNetBwe", 1, "libSceNetCtl", 1, 1, sceNetBweClearEventIpcInt);
|
||||||
|
@ -165,5 +165,5 @@ int PS4_SYSV_ABI sceNetCtlApRpStartWithRetry();
|
|||||||
int PS4_SYSV_ABI sceNetCtlApRpStop();
|
int PS4_SYSV_ABI sceNetCtlApRpStop();
|
||||||
int PS4_SYSV_ABI sceNetCtlApRpUnregisterCallback();
|
int PS4_SYSV_ABI sceNetCtlApRpUnregisterCallback();
|
||||||
|
|
||||||
void RegisterlibSceNetCtl(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::NetCtl
|
} // namespace Libraries::NetCtl
|
||||||
|
@ -1050,7 +1050,7 @@ int PS4_SYSV_ABI Func_28F8791A771D39C7() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceSsl(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("Pgt0gg14ewU", "libSceSsl", 1, "libSceSsl", 1, 1,
|
LIB_FUNCTION("Pgt0gg14ewU", "libSceSsl", 1, "libSceSsl", 1, 1,
|
||||||
CA_MGMT_allocCertDistinguishedName);
|
CA_MGMT_allocCertDistinguishedName);
|
||||||
LIB_FUNCTION("wJ5jCpkCv-c", "libSceSsl", 1, "libSceSsl", 1, 1,
|
LIB_FUNCTION("wJ5jCpkCv-c", "libSceSsl", 1, "libSceSsl", 1, 1,
|
||||||
|
@ -220,5 +220,5 @@ int PS4_SYSV_ABI VLONG_freeVlongQueue();
|
|||||||
int PS4_SYSV_ABI Func_22E76E60BC0587D7();
|
int PS4_SYSV_ABI Func_22E76E60BC0587D7();
|
||||||
int PS4_SYSV_ABI Func_28F8791A771D39C7();
|
int PS4_SYSV_ABI Func_28F8791A771D39C7();
|
||||||
|
|
||||||
void RegisterlibSceSsl(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Ssl
|
} // namespace Libraries::Ssl
|
||||||
|
@ -290,7 +290,7 @@ int PS4_SYSV_ABI Func_28F8791A771D39C7() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceSsl2(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("Md+HYkCBZB4", "libSceSsl", 1, "libSceSsl", 2, 1, CA_MGMT_extractKeyBlobEx);
|
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("9bKYzKP6kYU", "libSceSsl", 1, "libSceSsl", 2, 1, CA_MGMT_extractPublicKeyInfo);
|
||||||
LIB_FUNCTION("ipLIammTj2Q", "libSceSsl", 1, "libSceSsl", 2, 1, CA_MGMT_freeKeyBlob);
|
LIB_FUNCTION("ipLIammTj2Q", "libSceSsl", 1, "libSceSsl", 2, 1, CA_MGMT_freeKeyBlob);
|
||||||
|
@ -10,5 +10,5 @@ class SymbolsResolver;
|
|||||||
}
|
}
|
||||||
|
|
||||||
namespace Libraries::Ssl2 {
|
namespace Libraries::Ssl2 {
|
||||||
void RegisterlibSceSsl2(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Ssl2
|
} // namespace Libraries::Ssl2
|
@ -73,7 +73,7 @@ s32 PS4_SYSV_ABI sceNpAuthWaitAsync() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNpAuth(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("KxGkOrQJTqY", "libSceNpAuthCompat", 1, "libSceNpAuth", 1, 1,
|
LIB_FUNCTION("KxGkOrQJTqY", "libSceNpAuthCompat", 1, "libSceNpAuth", 1, 1,
|
||||||
sceNpAuthGetAuthorizationCode);
|
sceNpAuthGetAuthorizationCode);
|
||||||
LIB_FUNCTION("uaB-LoJqHis", "libSceNpAuthCompat", 1, "libSceNpAuth", 1, 1, sceNpAuthGetIdToken);
|
LIB_FUNCTION("uaB-LoJqHis", "libSceNpAuthCompat", 1, "libSceNpAuth", 1, 1, sceNpAuthGetIdToken);
|
||||||
|
@ -25,5 +25,5 @@ s32 PS4_SYSV_ABI sceNpAuthPollAsync();
|
|||||||
s32 PS4_SYSV_ABI sceNpAuthSetTimeout();
|
s32 PS4_SYSV_ABI sceNpAuthSetTimeout();
|
||||||
s32 PS4_SYSV_ABI sceNpAuthWaitAsync();
|
s32 PS4_SYSV_ABI sceNpAuthWaitAsync();
|
||||||
|
|
||||||
void RegisterlibSceNpAuth(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::NpAuth
|
} // namespace Libraries::NpAuth
|
@ -6129,7 +6129,7 @@ int PS4_SYSV_ABI Func_FFF4A3E279FB44A7() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNpCommon(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("i8UmXTSq7N4", "libSceNpCommonCompat", 1, "libSceNpCommon", 1, 1, sceNpCmpNpId);
|
LIB_FUNCTION("i8UmXTSq7N4", "libSceNpCommonCompat", 1, "libSceNpCommon", 1, 1, sceNpCmpNpId);
|
||||||
LIB_FUNCTION("TcwEFnakiSc", "libSceNpCommonCompat", 1, "libSceNpCommon", 1, 1,
|
LIB_FUNCTION("TcwEFnakiSc", "libSceNpCommonCompat", 1, "libSceNpCommon", 1, 1,
|
||||||
sceNpCmpNpIdInOrder);
|
sceNpCmpNpIdInOrder);
|
||||||
|
@ -1241,5 +1241,5 @@ int PS4_SYSV_ABI Func_FE55EE32098D0D58();
|
|||||||
int PS4_SYSV_ABI Func_FE79841022E1DA1C();
|
int PS4_SYSV_ABI Func_FE79841022E1DA1C();
|
||||||
int PS4_SYSV_ABI Func_FFF4A3E279FB44A7();
|
int PS4_SYSV_ABI Func_FFF4A3E279FB44A7();
|
||||||
|
|
||||||
void RegisterlibSceNpCommon(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::NpCommon
|
} // namespace Libraries::NpCommon
|
@ -2563,7 +2563,7 @@ int PS4_SYSV_ABI sceNpUnregisterStateCallbackForToolkit() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNpManager(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("70N4VzVCpQg", "libSceNpManagerForSys", 1, "libSceNpManager", 1, 1,
|
LIB_FUNCTION("70N4VzVCpQg", "libSceNpManagerForSys", 1, "libSceNpManager", 1, 1,
|
||||||
Func_EF4378573542A508);
|
Func_EF4378573542A508);
|
||||||
LIB_FUNCTION("pHLjntY0psg", "libSceNpManager", 1, "libSceNpManager", 1, 1,
|
LIB_FUNCTION("pHLjntY0psg", "libSceNpManager", 1, "libSceNpManager", 1, 1,
|
||||||
|
@ -542,5 +542,5 @@ int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit(OrbisNpStateCallbackForNpT
|
|||||||
void* userdata);
|
void* userdata);
|
||||||
int PS4_SYSV_ABI sceNpUnregisterStateCallbackForToolkit();
|
int PS4_SYSV_ABI sceNpUnregisterStateCallbackForToolkit();
|
||||||
|
|
||||||
void RegisterlibSceNpManager(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::NpManager
|
} // namespace Libraries::NpManager
|
||||||
|
@ -138,7 +138,7 @@ s32 PS4_SYSV_ABI sceNpPartyUnregisterPrivateHandler() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNpParty(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("3e4k2mzLkmc", "libSceNpParty", 1, "libSceNpParty", 1, 1, sceNpPartyCheckCallback);
|
LIB_FUNCTION("3e4k2mzLkmc", "libSceNpParty", 1, "libSceNpParty", 1, 1, sceNpPartyCheckCallback);
|
||||||
LIB_FUNCTION("nOZRy-slBoA", "libSceNpParty", 1, "libSceNpParty", 1, 1, sceNpPartyCreate);
|
LIB_FUNCTION("nOZRy-slBoA", "libSceNpParty", 1, "libSceNpParty", 1, 1, sceNpPartyCreate);
|
||||||
LIB_FUNCTION("XQSUbbnpPBA", "libSceNpParty", 1, "libSceNpParty", 1, 1, sceNpPartyCreateA);
|
LIB_FUNCTION("XQSUbbnpPBA", "libSceNpParty", 1, "libSceNpParty", 1, 1, sceNpPartyCreateA);
|
||||||
|
@ -40,5 +40,5 @@ s32 PS4_SYSV_ABI sceNpPartyUnregisterPrivateHandler();
|
|||||||
s32 PS4_SYSV_ABI module_start();
|
s32 PS4_SYSV_ABI module_start();
|
||||||
s32 PS4_SYSV_ABI module_stop();
|
s32 PS4_SYSV_ABI module_stop();
|
||||||
|
|
||||||
void RegisterlibSceNpParty(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::NpParty
|
} // namespace Libraries::NpParty
|
@ -263,7 +263,7 @@ int PS4_SYSV_ABI sceNpScoreWaitAsync() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNpScore(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("1i7kmKbX6hk", "libSceNpScore", 1, "libSceNpScore", 1, 1, sceNpScoreAbortRequest);
|
LIB_FUNCTION("1i7kmKbX6hk", "libSceNpScore", 1, "libSceNpScore", 1, 1, sceNpScoreAbortRequest);
|
||||||
LIB_FUNCTION("2b3TI0mDYiI", "libSceNpScore", 1, "libSceNpScore", 1, 1, sceNpScoreCensorComment);
|
LIB_FUNCTION("2b3TI0mDYiI", "libSceNpScore", 1, "libSceNpScore", 1, 1, sceNpScoreCensorComment);
|
||||||
LIB_FUNCTION("4eOvDyN-aZc", "libSceNpScore", 1, "libSceNpScore", 1, 1,
|
LIB_FUNCTION("4eOvDyN-aZc", "libSceNpScore", 1, "libSceNpScore", 1, 1,
|
||||||
|
@ -63,5 +63,5 @@ int PS4_SYSV_ABI sceNpScoreSetThreadParam();
|
|||||||
int PS4_SYSV_ABI sceNpScoreSetTimeout();
|
int PS4_SYSV_ABI sceNpScoreSetTimeout();
|
||||||
int PS4_SYSV_ABI sceNpScoreWaitAsync();
|
int PS4_SYSV_ABI sceNpScoreWaitAsync();
|
||||||
|
|
||||||
void RegisterlibSceNpScore(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::NpScore
|
} // namespace Libraries::NpScore
|
@ -1023,7 +1023,7 @@ int PS4_SYSV_ABI Func_FA7A2DD770447552() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNpTrophy(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("aTnHs7W-9Uk", "libSceNpTrophy", 1, "libSceNpTrophy", 1, 1,
|
LIB_FUNCTION("aTnHs7W-9Uk", "libSceNpTrophy", 1, "libSceNpTrophy", 1, 1,
|
||||||
sceNpTrophyAbortHandle);
|
sceNpTrophyAbortHandle);
|
||||||
LIB_FUNCTION("cqGkYAN-gRw", "libSceNpTrophy", 1, "libSceNpTrophy", 1, 1,
|
LIB_FUNCTION("cqGkYAN-gRw", "libSceNpTrophy", 1, "libSceNpTrophy", 1, 1,
|
||||||
|
@ -225,5 +225,5 @@ int PS4_SYSV_ABI Func_9F80071876FFA5F6();
|
|||||||
int PS4_SYSV_ABI Func_F8EF6F5350A91990();
|
int PS4_SYSV_ABI Func_F8EF6F5350A91990();
|
||||||
int PS4_SYSV_ABI Func_FA7A2DD770447552();
|
int PS4_SYSV_ABI Func_FA7A2DD770447552();
|
||||||
|
|
||||||
void RegisterlibSceNpTrophy(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::NpTrophy
|
} // namespace Libraries::NpTrophy
|
@ -509,7 +509,7 @@ s32 PS4_SYSV_ABI Func_F9A32E8685627436() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceNpWebApi(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("x1Y7yiYSk7c", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
LIB_FUNCTION("x1Y7yiYSk7c", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||||
sceNpWebApiCreateContext);
|
sceNpWebApiCreateContext);
|
||||||
LIB_FUNCTION("y5Ta5JCzQHY", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
LIB_FUNCTION("y5Ta5JCzQHY", "libSceNpWebApiCompat", 1, "libSceNpWebApi", 1, 1,
|
||||||
|
@ -112,5 +112,5 @@ s32 PS4_SYSV_ABI Func_E324765D18EE4D12();
|
|||||||
s32 PS4_SYSV_ABI Func_E789F980D907B653();
|
s32 PS4_SYSV_ABI Func_E789F980D907B653();
|
||||||
s32 PS4_SYSV_ABI Func_F9A32E8685627436();
|
s32 PS4_SYSV_ABI Func_F9A32E8685627436();
|
||||||
|
|
||||||
void RegisterlibSceNpWebApi(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::NpWebApi
|
} // namespace Libraries::NpWebApi
|
@ -761,7 +761,7 @@ int PS4_SYSV_ABI Func_EF103E845B6F0420() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibScePad(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("6ncge5+l5Qs", "libScePad", 1, "libScePad", 1, 1, scePadClose);
|
LIB_FUNCTION("6ncge5+l5Qs", "libScePad", 1, "libScePad", 1, 1, scePadClose);
|
||||||
LIB_FUNCTION("kazv1NzSB8c", "libScePad", 1, "libScePad", 1, 1, scePadConnectPort);
|
LIB_FUNCTION("kazv1NzSB8c", "libScePad", 1, "libScePad", 1, 1, scePadConnectPort);
|
||||||
LIB_FUNCTION("AcslpN1jHR8", "libScePad", 1, "libScePad", 1, 1,
|
LIB_FUNCTION("AcslpN1jHR8", "libScePad", 1, "libScePad", 1, 1,
|
||||||
|
@ -348,5 +348,5 @@ int PS4_SYSV_ABI Func_51E514BCD3A05CA5();
|
|||||||
int PS4_SYSV_ABI Func_89C9237E393DA243();
|
int PS4_SYSV_ABI Func_89C9237E393DA243();
|
||||||
int PS4_SYSV_ABI Func_EF103E845B6F0420();
|
int PS4_SYSV_ABI Func_EF103E845B6F0420();
|
||||||
|
|
||||||
void RegisterlibScePad(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Pad
|
} // namespace Libraries::Pad
|
||||||
|
@ -385,7 +385,7 @@ s32 PS4_SYSV_ABI scePlayGoTerminate() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibScePlayGo(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("uEqMfMITvEI", "libSceDbgPlayGo", 1, "libScePlayGo", 1, 0,
|
LIB_FUNCTION("uEqMfMITvEI", "libSceDbgPlayGo", 1, "libScePlayGo", 1, 0,
|
||||||
sceDbgPlayGoRequestNextChunk);
|
sceDbgPlayGoRequestNextChunk);
|
||||||
LIB_FUNCTION("vU+FqrH+pEY", "libSceDbgPlayGo", 1, "libScePlayGo", 1, 0, sceDbgPlayGoSnapshot);
|
LIB_FUNCTION("vU+FqrH+pEY", "libSceDbgPlayGo", 1, "libScePlayGo", 1, 0, sceDbgPlayGoSnapshot);
|
||||||
|
@ -41,5 +41,5 @@ s32 PS4_SYSV_ABI scePlayGoSetToDoList(OrbisPlayGoHandle handle, const OrbisPlayG
|
|||||||
uint32_t numberOfEntries);
|
uint32_t numberOfEntries);
|
||||||
s32 PS4_SYSV_ABI scePlayGoTerminate();
|
s32 PS4_SYSV_ABI scePlayGoTerminate();
|
||||||
|
|
||||||
void RegisterlibScePlayGo(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::PlayGo
|
} // namespace Libraries::PlayGo
|
@ -58,7 +58,7 @@ Status PS4_SYSV_ABI scePlayGoDialogUpdateStatus() {
|
|||||||
return Status::FINISHED;
|
return Status::FINISHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibScePlayGoDialog(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("fbigNQiZpm0", "libScePlayGoDialog", 1, "libScePlayGoDialog", 1, 1,
|
LIB_FUNCTION("fbigNQiZpm0", "libScePlayGoDialog", 1, "libScePlayGoDialog", 1, 1,
|
||||||
scePlayGoDialogClose);
|
scePlayGoDialogClose);
|
||||||
LIB_FUNCTION("wx9TDplJKB4", "libScePlayGoDialog", 1, "libScePlayGoDialog", 1, 1,
|
LIB_FUNCTION("wx9TDplJKB4", "libScePlayGoDialog", 1, "libScePlayGoDialog", 1, 1,
|
||||||
|
@ -34,5 +34,5 @@ CommonDialog::Error PS4_SYSV_ABI scePlayGoDialogOpen(const OrbisPlayGoDialogPara
|
|||||||
CommonDialog::Error PS4_SYSV_ABI scePlayGoDialogTerminate();
|
CommonDialog::Error PS4_SYSV_ABI scePlayGoDialogTerminate();
|
||||||
CommonDialog::Status PS4_SYSV_ABI scePlayGoDialogUpdateStatus();
|
CommonDialog::Status PS4_SYSV_ABI scePlayGoDialogUpdateStatus();
|
||||||
|
|
||||||
void RegisterlibScePlayGoDialog(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::PlayGo::Dialog
|
} // namespace Libraries::PlayGo::Dialog
|
||||||
|
@ -22,7 +22,7 @@ s32 PS4_SYSV_ABI sceRandomGetRandomNumber(u8* buf, std::size_t size) {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceRandom(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("PI7jIZj4pcE", "libSceRandom", 1, "libSceRandom", 1, 1, sceRandomGetRandomNumber);
|
LIB_FUNCTION("PI7jIZj4pcE", "libSceRandom", 1, "libSceRandom", 1, 1, sceRandomGetRandomNumber);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,6 +15,6 @@ constexpr s32 SCE_RANDOM_MAX_SIZE = 64;
|
|||||||
|
|
||||||
s32 PS4_SYSV_ABI sceRandomGetRandomNumber(u8* buf, std::size_t size);
|
s32 PS4_SYSV_ABI sceRandomGetRandomNumber(u8* buf, std::size_t size);
|
||||||
|
|
||||||
void RegisterlibSceRandom(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
|
|
||||||
} // namespace Libraries::Random
|
} // namespace Libraries::Random
|
||||||
|
@ -180,7 +180,7 @@ s32 PS4_SYSV_ABI sceRazorCpuWriteBookmark() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceRazorCpu(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("JFzLJBlYIJE", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
|
LIB_FUNCTION("JFzLJBlYIJE", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
|
||||||
sceRazorCpuBeginLogicalFileAccess);
|
sceRazorCpuBeginLogicalFileAccess);
|
||||||
LIB_FUNCTION("SfRTRZ1Sh+U", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
|
LIB_FUNCTION("SfRTRZ1Sh+U", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
|
||||||
|
@ -13,5 +13,5 @@ class SymbolsResolver;
|
|||||||
}
|
}
|
||||||
|
|
||||||
namespace Libraries::RazorCpu {
|
namespace Libraries::RazorCpu {
|
||||||
void RegisterlibSceRazorCpu(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::RazorCpu
|
} // namespace Libraries::RazorCpu
|
@ -219,7 +219,7 @@ int PS4_SYSV_ABI Func_1D5EE365ED5FADB3() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceRemoteplay(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("xQeIryTX7dY", "libSceRemoteplay", 1, "libSceRemoteplay", 0, 0,
|
LIB_FUNCTION("xQeIryTX7dY", "libSceRemoteplay", 1, "libSceRemoteplay", 0, 0,
|
||||||
sceRemoteplayApprove);
|
sceRemoteplayApprove);
|
||||||
LIB_FUNCTION("IYZ+Mu+8tPo", "libSceRemoteplay", 1, "libSceRemoteplay", 0, 0,
|
LIB_FUNCTION("IYZ+Mu+8tPo", "libSceRemoteplay", 1, "libSceRemoteplay", 0, 0,
|
||||||
|
@ -58,5 +58,5 @@ int PS4_SYSV_ABI sceRemoteplaySetRpMode();
|
|||||||
int PS4_SYSV_ABI sceRemoteplayTerminate();
|
int PS4_SYSV_ABI sceRemoteplayTerminate();
|
||||||
int PS4_SYSV_ABI Func_1D5EE365ED5FADB3();
|
int PS4_SYSV_ABI Func_1D5EE365ED5FADB3();
|
||||||
|
|
||||||
void RegisterlibSceRemoteplay(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::Remoteplay
|
} // namespace Libraries::Remoteplay
|
@ -139,7 +139,7 @@ Status PS4_SYSV_ABI sceSaveDataDialogUpdateStatus() {
|
|||||||
return g_status;
|
return g_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceSaveDataDialog(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("fH46Lag88XY", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1,
|
LIB_FUNCTION("fH46Lag88XY", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1,
|
||||||
sceSaveDataDialogClose);
|
sceSaveDataDialogClose);
|
||||||
LIB_FUNCTION("yEiJ-qqr6Cg", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1,
|
LIB_FUNCTION("yEiJ-qqr6Cg", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1,
|
||||||
|
@ -29,5 +29,5 @@ sceSaveDataDialogProgressBarSetValue(OrbisSaveDataDialogProgressBarTarget target
|
|||||||
CommonDialog::Error PS4_SYSV_ABI sceSaveDataDialogTerminate();
|
CommonDialog::Error PS4_SYSV_ABI sceSaveDataDialogTerminate();
|
||||||
CommonDialog::Status PS4_SYSV_ABI sceSaveDataDialogUpdateStatus();
|
CommonDialog::Status PS4_SYSV_ABI sceSaveDataDialogUpdateStatus();
|
||||||
|
|
||||||
void RegisterlibSceSaveDataDialog(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::SaveData::Dialog
|
} // namespace Libraries::SaveData::Dialog
|
||||||
|
@ -1723,7 +1723,7 @@ int PS4_SYSV_ABI Func_02E4C4D201716422() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceSaveData(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("dQ2GohUHXzk", "libSceSaveData", 1, "libSceSaveData", 1, 1, sceSaveDataAbort);
|
LIB_FUNCTION("dQ2GohUHXzk", "libSceSaveData", 1, "libSceSaveData", 1, 1, sceSaveDataAbort);
|
||||||
LIB_FUNCTION("z1JA8-iJt3k", "libSceSaveData", 1, "libSceSaveData", 1, 1, sceSaveDataBackup);
|
LIB_FUNCTION("z1JA8-iJt3k", "libSceSaveData", 1, "libSceSaveData", 1, 1, sceSaveDataBackup);
|
||||||
LIB_FUNCTION("kLJQ3XioYiU", "libSceSaveData", 1, "libSceSaveData", 1, 1,
|
LIB_FUNCTION("kLJQ3XioYiU", "libSceSaveData", 1, "libSceSaveData", 1, 1,
|
||||||
|
@ -184,5 +184,5 @@ int PS4_SYSV_ABI sceSaveDataUnregisterEventCallback();
|
|||||||
int PS4_SYSV_ABI sceSaveDataUpload();
|
int PS4_SYSV_ABI sceSaveDataUpload();
|
||||||
int PS4_SYSV_ABI Func_02E4C4D201716422();
|
int PS4_SYSV_ABI Func_02E4C4D201716422();
|
||||||
|
|
||||||
void RegisterlibSceSaveData(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::SaveData
|
} // namespace Libraries::SaveData
|
||||||
|
@ -78,7 +78,7 @@ int PS4_SYSV_ABI sceScreenShotSetDrcParam() {
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterlibSceScreenShot(Core::Loader::SymbolsResolver* sym) {
|
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("AS45QoYHjc4", "libSceScreenShot", 1, "libSceScreenShot", 0, 9, _Z5dummyv);
|
LIB_FUNCTION("AS45QoYHjc4", "libSceScreenShot", 1, "libSceScreenShot", 0, 9, _Z5dummyv);
|
||||||
LIB_FUNCTION("JuMLLmmvRgk", "libSceScreenShot", 1, "libSceScreenShot", 0, 9,
|
LIB_FUNCTION("JuMLLmmvRgk", "libSceScreenShot", 1, "libSceScreenShot", 0, 9,
|
||||||
sceScreenShotCapture);
|
sceScreenShotCapture);
|
||||||
|
@ -26,5 +26,5 @@ int PS4_SYSV_ABI sceScreenShotSetOverlayImageWithOrigin();
|
|||||||
int PS4_SYSV_ABI sceScreenShotSetParam();
|
int PS4_SYSV_ABI sceScreenShotSetParam();
|
||||||
int PS4_SYSV_ABI sceScreenShotSetDrcParam();
|
int PS4_SYSV_ABI sceScreenShotSetDrcParam();
|
||||||
|
|
||||||
void RegisterlibSceScreenShot(Core::Loader::SymbolsResolver* sym);
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
} // namespace Libraries::ScreenShot
|
} // namespace Libraries::ScreenShot
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user